文章目录
前言
STM32串口通信是STM32单片机中常用的一种通信方式,它通过单向或双向的串口通讯传输数据。通常使用USART (Universal Synchronous Asynchronous Receiver Transmitter)模块来实现串口通信。串口通信是指将数据通过串行线路依次发送和接收的方式进行通信。STM32支持多种串口通信协议,如UART、USART、LIN、IrDA和Modbus等。
使用stm32CubeMX,配合Keil,使用HAL库方式,设置USART1 波特率为115200,1位停止位,无校验位,完成下列任务:
1)STM32系统给上位机(win10)连续发送 " hello windows!"
win10采用“串口助手”工具接收;
2)在完成以上任务基础,继续扩展功能:当上位机给stm32发送一个字符" # “后,stm32暂停发送"hello windows!” 发送一个字符 " * "后,stm32继续发送;
一、环境
- 硬件:stm32f103c8t6 核心板
- 软件:STM32CubeMX 6.9.2
- 软件:keil5 mdk
二、STM32CubeMX
1、配置SYS
2、配置RCC
3、配置时钟
4、USART设置
5、Code Generator设置
6、Project Manager 设置
点击 GENERATE CODE
生成代码,然后打开工程。
三、通过KEil配置代码
1、编译运行
编译无误。
2、打开main.c
在while中添加代码:
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
//添加下面两行代码
HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);
HAL_Delay(1000); //延时1s
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
3、编译烧录
4、结果演示
打开串口助手,波特率设置为115200
,点击 打开串口
:
5、串口输出波形
打开模式棒,点击Debug
进行设置:
进入Debug
,进入逻辑分析仪
打开`设置:
输入USART1_SR
,运行,结果展示:
分析
由图可知时序状态正确,波特率实际为0.983689Hz。
四、串口中断通信
1、设置STM32CubeMX
在之前的基础上,PC13
设置为GPIO_Output
:
勾选图中标注选项:
点击 GENERATE CODE
生成代码,然后打开工程。
2、通过KEil配置代码
打开main.c
,添加代码:
char c;//指令 0:停止 1:开始
char message[]="hello Windows\n";//输出信息
char tips[]="CommandError\n";//提示1
char tips1[]="Start.....\n";//提示2
char tips2[]="Stop......\n";//提示3
int flag=0;//标志
在int main
中添加:
//设置接受中断
HAL_UART_Receive_IT(&huart1, (uint8_t *)&c, 1);
//当flag为1时,每秒发送一次信息
//当flag为0时,停止
while (1)
{
if(flag==1){
//发送信息
HAL_UART_Transmit(&huart1, (uint8_t *)&message, strlen(message),0xFFFF);
//延时
HAL_Delay(1000);
}
}
重写中断处理函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
//当输入的指令为0时,发送提示并改变flag
if(c=='#'){
flag=0;
HAL_UART_Transmit(&huart1, (uint8_t *)&tips2, strlen(tips2),0xFFFF);
}
//当输入的指令为1时,发送提示并改变flag
else if(c=='*'){
flag=1;
HAL_UART_Transmit(&huart1, (uint8_t *)&tips1, strlen(tips1),0xFFFF);
}
//当输入不存在指令时,发送提示并改变flag
else {
flag=0;
HAL_UART_Transmit(&huart1, (uint8_t *)&tips, strlen(tips),0xFFFF);
}
//重新设置中断
HAL_UART_Receive_IT(&huart1, (uint8_t *)&c, 1);
}
3、编译烧录
4、结果演示
和之前一样在串口助手上操作:
串口通信1
输入*
继续发送,输入#
暂停发送。
五、总结
在串口通信实验中,需要掌握USART模块的基本配置,如波特率、奇偶校验、停止位等参数设置。可以帮助我们学习STM32的基本知识和操作方法,提高我们的实践能力。
参考
https://blog.csdn.net/qq_47281915/article/details/121053903
https://blog.csdn.net/qq_45945548/article/details/120984961