资源简介
STM32F103VE 的串口使用程序,完全使用寄存器操作,没有使用库,我以前发了这个程序,但是在整理的时候没有把定义等的代码全部包含进去,我在这里先说声对不起,这次我把完整的定义,头文件和源代码都包含了进来,程序中包含了所有寄存器的定义,还附上了中文说明,希望对大家有用,本程序是我给企业做项目的时候用到的,肯定是调试通过的。
代码片段和文件信息
//发送采用查询法,接收采用中断法
#include “stm32f10x_map.h“
typedef unsigned long u32;
typedef unsigned short u16;
typedef unsigned char u8;
#define FLAG_TC ((u16 )0x0040)
u8 temp temp1temp2temp3temp4temp5;
/*************************************************
函数: void RCC_Config(void)
功能: 配置系统时钟
参数: 无
返回: 无
**************************************************/
void RCC_Configuration(void)
{
RCC_CR |= (u32)(1<<16); //外部HSE振荡器开启RCC_CR寄存器的HSEON位(位16)置1
while(RCC_CR&B_17 == 0);
RCC_CR &= ~(u32)(1<<0); //内部8MHz时钟关闭,RCC_CR寄存器的HSION位(位0)清0
RCC_CFGR &= (u32)(0x00000000); //
RCC_CFGR |= ( (u32)(1<<18)|(0<<17)|(1<<16)|(2<<2)|(2<<0) );//
//时钟配置寄存器(3*8MHZ)|(HSE不分频)|(HSE时钟作为PLL输入时钟)|(PLL输出作为系统时钟)
RCC_CFGR |=(u32)(4<<8); //APB1(低速APB)两分频,12MHz
RCC_CFGR|=(u32)(0<<24); //无MCO 系统时钟(PLL)两分频输出,12MHz
RCC_CFGR |=(u32)(1<<14); //PCLK2 4分频后作为ADC时钟 6MHZ
RCC_CR |=(u32)(1<<24); //PLL使能
RCC_CIR|=(u32)(0x00000000);//时钟中断寄存器
}
/*************************************************
函数: void NVIC_Configuration(void)
功能: 端口
参数: 无
返回: 无
**************************************************/
void NVIC_Configuration(void)
{
NVIC_ENINT1 |=(1<<5|1<<6|1<<7|1<<20|1<<21); //第5位为USART1中断开启位(NVIC设置) 串口12345中断开启
}
/*************************************************
函数: void GPIO_Configuration(void)
功能: 端口锁定
参数: 无
返回: 无
**************************************************/
void GPIO_Configuration(void)
{
RCC_APB2RSTR |= (u32)(1<<2); //APB2 外设复位寄存器 IOA复位
RCC_APB2RSTR &= ~(u32)(1<<2);//关闭APB2 外设复位寄存器 IOA复位
RCC_APB2RSTR |= (u32)(1<<3); //APB2 外设复位寄存器 IOB复位
RCC_APB2RSTR &= ~(u32)(1<<3);//关闭APB2 外设复位寄存器 IOB复位
RCC_APB2RSTR |= (u32)(1<<4); //APB2 外设复位寄存器 IOC复位
RCC_APB2RSTR &= ~(u32)(1<<4);//关闭APB2 外设复位寄存器 IOC复位
RCC_APB2RSTR |= (u32)(1<<5); //APB2 外设复位寄存器 IOD复位
RCC_APB2RSTR &= ~(u32)(1<<5);//关闭APB2 外设复位寄存器 IOD复位
RCC_APB2ENR |= (u32)(1<<2); //IOA口时钟开启
RCC_APB2ENR |= (u32)(1<<3); //IOB口时钟开启
RCC_APB2ENR |= (u32)(1<<4); //IOC口时钟开启
RCC_APB2ENR |= (u32)(1<<5); //IOD口时钟开启
GPIOA_CRL = (u32)0x00000000;
GPIOA_CRH = (u32)0x00000000;
GPIOB_CRL = (u32)0x00000000;
GPIOB_CRH = (u32)0x00000000;
GPIOD_CRL = (u32)0x00000000;
GPIOD_CRH = (u32)0x00000000;
GPIOC_CRL = (u32)0x00000000;
GPIOC_CRH = (u32)0x00000000;
GPIOA_CRL |= (u32)(3<<8|2<<10|0<<12|1<<14); //USART2,PA2(TX)PA3(RX)设置
GPIOA_CRH |= (u32)(3<<4|2<<6|0<<8|1<<10); //USART1,PA9(TX)PA10(RX)设置
GPIOB_CRH |= (u32)(0x4b<<8); //USART3,PB10(TX)PB11(RX)设置
GPIOC_CRH |= (u32)(0x4b<<8); //UART4,PC10(TX)PC11(RX)设置
GPIOC_CRH |= (u32)(0xb<<16); //UART5,PC12(TX)PD2(RX)设置 配置发送引脚
GPIOD_CRL |= (u32)(0x4<<8); //配置接收引脚
}
/*************************************************
函数: void USART_Configuration(void)
功能: 串口配置
参数: 无
返回: 无
***********
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 18785 2012-02-17 16:08 stm32f10x_map.h
文件 8443 2012-08-19 12:54 usart.c
----------- --------- ---------- ----- ----
27228 2
相关资源
- stm32 ds18b20 温度传感器 测试通过
- PC 串口调试软件
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- 51单片机读取温度数据存储到SD卡中并
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- 单片机与PC机串口通讯仿真
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- 串口调试助手V5.0
- STM32F103 CC2500完整驱动(模拟SPI)
- 双串口调试助手 V4.0 _ 可同时调试两个
- 读取串口数据并画实时曲线的VC 程序
- 网络(UDP)转串口程序
- 串口绘制曲线 将收到的数据进行曲线
- 基于ARM蓝牙传输源程序
- JS操作本地网页串口源码
- AT89S ISP下载编程软件(串口)
- 串口操作类(justinio)
- 《Visual Basic 串口通信与测控应用技术
- 耀华XK3190-A9地磅串口代码
- ch452串口键盘驱动程序
- 托利多电子秤ind245协议读取串口数据
- SX1280.rar
- 通过串口s19文件源代码
- STM32F103C8T6+NRF24l01无线通信
- 友善串口调试助手V3.7.3,带注册码
- win7 64bit 串口调试工具
- SSCOM32
- Mac电脑串口工具(2018)
- 基于串口设备的嵌入式Web服务器系统
评论
共有 条评论