STM32CUBEMX

您所在的位置:网站首页 监测串口数据的网站 STM32CUBEMX

STM32CUBEMX

2024-07-11 08:14| 来源: 网络整理| 查看: 265

实验1:点亮LED 实验2:按键控制LED 实验3:外部中断检测按键 实验4:扩展芯片检测按键 实验5:定时器实现LED闪烁 实验6:基于PWM的呼吸灯 实验7:检测输入的PWM频率和脉宽 实验8:串口的输入和输出 实验9:串口使用PRINTF函数 实验10:SPI接口操作片外FLASH 实验11:SPI接口操作TF卡 实验12:IIC接口操作OLED屏幕 实验13:ADC电压采样

串口是单片机上非常重要的一个接口,可以用来通信、调试、打印关键信息。本节实验用来实现串口数据的接收和发送。

先看原理图,板子使用的是STM32F103C8T6的串口1,即USART1。该串口连接USB转串口芯片CH340C,最终通过串口线连接电脑,实现串口数据的接收与发送。

步骤如下:

1、新建工程,进行基本配置。通过点击“ACCESS TO MCU SELECTOR”来创建一个新的工程:

参照实验1,芯片选择“STM32F103C8”。

打开外部时钟,点击“System Core”,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。

选择调试接口,点击“System Core”,选择RCC。,在右侧弹出的菜单栏中选择“Serial Wire”。

2、配置串口。如图,选择异步模式,依次配置波特率、收发模式。

Buad Rate为传输速度,Data Direction配置为支持接收和发送。

3、串口中断配置。开启串口中断。

生成中断相关代码。

4、配置PC15为输出模式,命名为“D1”。可通过串口控制D1状态。

5、时钟配置。参照实验1.

6、参照实验1的步骤7,进行相应配置,生成工程文件。

7、修改工程。位置1,定义相应变量,存储收到的数据或计算数据个数:

代码:

uint8_t aRxBuffer; //½ÓÊÕÖжϻº³å uint8_t Uart1_RxBuff[256]; //½ÓÊÕ»º³å uint8_t Uart1_Rx_Cnt = 0; //½ÓÊÕ»º³å¼ÆÊý uint8_t cAlmStr[] = "Êý¾ÝÒç³ö(´óÓÚ256)\r\n"; uint8_t helloStr[23] = "USART1 start to work!\r\n";

位置2,开启串口接收中断,并输出提示信息:

代码:

HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); HAL_UART_Transmit_IT(&huart1, (uint8_t *)&helloStr, 23);

位置3,对接收的数据做判断,并把收到的数据发送出去。

代码:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { /* Prevent unused argument(s) compilation warning */ UNUSED(huart); /* NOTE: This function Should not be modified, when the callback is needed, the HAL_UART_TxCpltCallback could be implemented in the user file */ if(Uart1_Rx_Cnt >= 255) //Òç³öÅÐ¶Ï { Uart1_Rx_Cnt = 0; memset(Uart1_RxBuff,0x00,sizeof(Uart1_RxBuff)); HAL_UART_Transmit(&huart1, (uint8_t *)&cAlmStr, sizeof(cAlmStr),0xFFFF); } else { Uart1_RxBuff[Uart1_Rx_Cnt++] = aRxBuffer; //½ÓÊÕÊý¾Ý»º´æ if(aRxBuffer == 'a') //GPIO•¬×ª { HAL_GPIO_TogglePin(D1_GPIO_Port,D1_Pin); } if((Uart1_RxBuff[Uart1_Rx_Cnt-1] == 0x0A)&&(Uart1_RxBuff[Uart1_Rx_Cnt-2] == 0x0D)) //ÅжϽáÊøλ { HAL_UART_Transmit(&huart1, (uint8_t *)&Uart1_RxBuff, Uart1_Rx_Cnt,0xFFFF); //½«ÊÕµ½µÄÊý¾Ý•¢³öÈ¥ Uart1_Rx_Cnt = 0; memset(Uart1_RxBuff,0x00,sizeof(Uart1_RxBuff)); //Çå¿ÕÊý×é } } HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); //ÔٴοªÆô½ÓÊÕÖÐ¶Ï }

修改后,保存,编译、下载,重新上电。使用串口助手连接板子和电脑,发送数据,单片机收到后,会直接返回。

整个过程有PPT、数据手册、原理图、源码、相关软件,在公众号(单片机爱好者)回复关键词:002或者STM32CUBEMX教程,即可获取下载链接。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3