由于调试过程中发现Proteus 8有些许bug,串口中断采用STM32F103RCT6开发板进行讲解
前期准备:
- STM32CubeMX
- STM32F103RCT6开发板
- IDE Keil(MDK-ARM)
STM32CubeMX部分
1. 配置时钟
选择STM32F103RCTx系列芯片,配置时钟的同时会自动配置IO口引脚
将HCLK设置为最大频率72MHz
2.配置USART
选择:
USART1串口1
Baud Rate(波特率):115200 Bits/s
Work Length(传输数据长度): 8 Bit
Parity(奇偶校验位) : 无
STOP Bits(停止位) :1
Data Direction(数据方向) : 发送和接收都使能
设置完之后就会自动配置USART1_RX和USART1_TX两个引脚
接着在NVIC Settings一栏设置使能全局中断
3.配置IO口
将PC4,PC5,PB0,PB1设置为:
高电平
Output模式
既不上拉也不下拉
响应速度高
3. 工程生成
工程管理依旧是这几个选项,然后GENERATE CODE,STM32CubeMX部分完成。
MDK 5部分
· HAL_UART_Transmit();串口发送数据,使用超时管理机制
· HAL_UART_Receive();串口接收数据,使用超时管理机制
· HAL_UART_Transmit_IT();串口中断模式发送
· HAL_UART_Receive_IT();串口中断模式接收
· HAL_UART_Transmit_DMA();串口DMA模式发送
· HAL_UART_Transmit_DMA();串口DMA模式接收
· HAL_UART_IRQHandler(UART_HandleTypeDef *huart); //串口中断处理函数
· HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); //串口发送中断回调函数
· HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart); //串口发送一半中断回调函数(用的较少)
· HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); //串口接收中断回调函数
· HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);//串口接收一半回调函数(用的较少)
· HAL_UART_ErrorCallback(