当前位置:   article > 正文

stm32f407与陶晶驰串口屏的简易通信 / 串口收发(hal库)_串口屏通信

串口屏通信
一、开发环境

硬件:STM32F407 核心开发板

单片机:STM32F407VET6

Keil版本:5.32

STM32CubeMX版本:6.11.0

 二、配置STM32CubeMX

1. 选择时钟源

2. 配置时钟

​3. 使能Debug功能:Serial Wire

4. HAL库时基选择:SysTick

5. USART1配置:选择异步模式。

6. 配置工程参数:在Project标签页中,配置项目名称和位置,选择工具链MDK-ARM。

7. 生成代码:在Code Generator标签页中,配置工程外设文件与HAL库,勾选头文件.c和.h文件分开,然后点击Project > Generate Code生成代码。

三、代码实现与部署

1. main.c增加代码:添加printf的头文件 #include "stdio.h",定义变量RxBuffer和RxFlag,然后按照陶晶驰串口屏的通信协议发送即可,例子如下。

添加串口接收的中断函数,即可实现串口接收。

  1. #include "stdio.h"
  2. uint8_t RxBuffer; //接收缓冲区
  3. uint16_t RxFlag = 0; //接收完成标志;0表示接受未完成,1表示接收完成
  4. printf("page0.t2.txt=\"三角波\"\xFF\xFF\xFF");
  5. printf("page0.n0.val=%d\xFF\xFF\xFF", Fre);
  6. /* USER CODE BEGIN 3 */
  7. if(RxFlag == 1)
  8. {
  9. RxFlag = 0;
  10. }
  11. /* USER CODE END 3 */
  12. /* USER CODE BEGIN 4 */
  13. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  14. {
  15. if(huart->Instance == USART1) //判断发生接收中断的串口
  16. {
  17. RxFlag = 1; //置为接收完成标志
  18. }
  19. HAL_UART_Receive_IT(&huart1, (uint8_t *)&RxBuffer, 2);
  20. }
  21. /* USER CODE END 4 */

2. usart.c增加代码:添加头文件#include "stdio.h"。在末尾用户代码区增加如下代码。

  1. #include "stdio.h"
  2. /* USER CODE BEGIN 1 */
  3. struct __FILE
  4. {
  5.     int a;
  6. };
  7. FILE __stdout;
  8. int fputc(int ch, FILE *f)
  9. {
  10. HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, 0xffff); //HAL库串口发送函数
  11. return ch;
  12. }
  13. int fgetc(FILE *f)
  14. {
  15. uint8_t ch = 0;
  16. HAL_UART_Receive(&huart1, &ch, 1, 0xffff); //HAL库串口接收函数
  17. return ch;
  18. }
  19. /* USER CODE END 1 */
 参考:利用STM32 HAL库实现USART串口通信,并通过printf重定向输出“Hello World“_hal库printf-CSDN博客
陶晶驰串口屏幅频特性曲线绘制/STM32F407与串口屏通信_micropython uart串口屏-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/969935
推荐阅读
相关标签
  

闽ICP备14008679号