1.STM32CubeMX的配置没啥子好说的,使能然后改一下波特率和字长,然后在将中断勾选,把中断等级调到1(一定要比systick的优先级垃圾!!!)

2.驱动代码

在生成的it.c文件中,例如用的是串口3,防止串口的ORE的bug粗现

void USART1_IRQHandler(void)

{

/* USER CODE BEGIN USART1_IRQn 0 */

if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE)!=RESET)

__HAL_UART_CLEAR_OREFLAG(&huart1);

/* USER CODE END USART1_IRQn 0 */

HAL_UART_IRQHandler(&huart1);

/* USER CODE BEGIN USART1_IRQn 1 */

/* USER CODE END USART1_IRQn 1 */

}

在用户文件userUtility.c中,第一个函数也是为了防止串口出ORE的bug,第二个函数用于接收

void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)

{

if(__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE)!=RESET)

__HAL_UART_CLEAR_OREFLAG(huart);

}

/*-----------------------------------------------------------*/

/*-----------------------------------------------------------*/

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

if(huart == &huart1)

{

vUart1RecData();

}

else if(huart == &huart4)

{

vUart4RecData();

}

}

串口的驱动文件中

#define UARTX_RX_BUF_MAX_LEN 32

#define UARTX_TX_BUF_MAX_LEN 32

staticuc prv_ucUartxRxBuf[UARTX_RX_BUF_MAX_LEN];staticuc prv_ucUartxRxLen;staticuc prv_ucUartxTxBuf[UARTX_TX_BUF_MAX_LEN];staticuc prv_ucUartxTxLen;void vStartUartxRecIt(void)//初始化函数,开启串口接收中断

{

HAL_UART_Receive_IT(&huart1, prv_ucUartxRxBuf,1);

}void vUartxRecData(void)

{

prv_ucUartxRxLen=1;while(HAL_UART_Receive(&huart1, &prv_ucUartxRxBuf[prv_ucUartxRxLen], 1, 2)==HAL_OK)//进入阻塞接收2ms接不到就不算在同一包数据中,就是因为这里内部用了sysytick来延时,所以要注意中断优先级

{

prv_ucUartxRxLen++;if(prv_ucUartxRxLen>=UARTX_RX_BUF_MAX_LEN)

{break;

}

}

controlData.ucUart1RxFlg=1;

}void vHandleUartxRxBuf(void)

{if(controlData.ucUart1RxFlg==1)//通过一个Flg来耦合接收和处理函数,处理函数看情况放在userWhile中或者直接放在TIM6的回调函数中,多少ms执行一次,充当实时任务

{//

//Handle code// memset((uc *)&prv_ucUartxRxBuf,0,sizeof(prv_ucUartxRxBuf));

controlData.ucUart1RxFlg=0;

vStartUartxRecIt();

}

}

3.串口发送数据的时候

HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

这个函数最好用

__disable_irq();

__enable_irq();

夹起来,一来是为了防止发送的时候,有中断来造成数据传输有“断包”的现象,二来是避免发送数据的时候同时接到数据

产生ORE这种BUG

PS;有的人看到可能会说CLEAR_LG这个宏函数,要求输入的参数和GET_ERROR返回的值,参数类型不一样,但其实看一下底层的宏定义会发现,

就tm是同一个玩意儿

cubemx stm32 配置两个串口_STM32CubeMX的串口配置,以及驱动代码相关推荐

  1. stm32捕获占空比_【电机控制】六步法驱动BLDC电机,使用硬件COM事件,STM32+CUBEMX(HAL库)配置...

    现在我也只能说是电机入门,但是想要把电机作为终身事业,从有霍尔到无霍尔,从方波到正弦波,现在把其中的一些知识点分享出来,因为电机控制其实的资料比较难找的,前人栽树,后人乘凉,如果我有什么错误,在知乎上 ...

  2. CubeMX STM32串口1DMA使用IDLE中断接收、串口2DMA接收DMX512信号(标准)

    CubeMX STM32串口1DMA使用IDLE中断接收.串口2DMA收发DMX512信号(标准) DMX512协议 CubeMX 代码部分 串口1 串口2 外部中断 定时器1 总结 DMX512协议 ...

  3. cubemx stm32 陶晶驰 串口屏 基于YXY通信原理的串口屏驱动代码

    陶晶驰串口屏 资料 陶晶驰串口屏是本质是一个MCU,屏幕是MCU的模块,一般是一块TFT屏幕.在串口屏厂商提供的软件上面编写界面,然后通过串口直接烧到串口屏的MCU上,然后在屏幕上展示出来. 串口屏资 ...

  4. STM32串口的使用(原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯)

    参考:串口的结构体 重定向printf串口发送stm32等博文 作者:点灯小哥 发布时间: 2021-03-06 21:46:33 网址:https://blog.csdn.net/weixin_46 ...

  5. 基于stm32的两轮自平衡小车4(软件调试篇)

    本篇是软件调试篇,接上一篇硬件篇:基于stm32的两轮自平衡小车3(硬件篇),本篇内容是对硬件部分的软件实现,具体模块详见目录.这里先上效果:转B站 目录 定时器PWM驱动程序 定时器编码器模式驱动程 ...

  6. STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL)

    STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL ) STM32的USB功能模块可以配置为虚拟串口(VCOM: Visual Port Com)或人机交互设备(HID: Hu ...

  7. tm4c123gxl库函数调包侠养成(四)——————串口发送的基本配置

    电赛将至,笔者也是终于想起自己还有个CSDN账号,前来更新一下帖子,顺便复习一下单片机知识. 一.串口概述 串口是单片机不可缺少的功能之一,通过串口单片机可以与电脑或是另一块单片机进行通信,在电赛中, ...

  8. STM32之USART-串口通信(含串口实验详细解析)

    STM32之串口通信 - USART(含串口实验详细解析) 开发环境:Window 10 开发工具:Keil uVision5 MDK 硬件:STM32F103 资料参考: [正点原子]STM32F1 ...

  9. 【STM32学习笔记】(9)——串口通讯(USART)详解

    本文主要参考了野火的零死角玩转STM32和正点原子的STM32F1 开发指南 V1.1(精英板-库函数版本),文章中大部分知识都是从两本书中提取出来,串口通信协议的知识主要参考野火的书籍,而串口实验部 ...

最新文章

  1. 百度2016笔试题第一题:页面请求失败值
  2. Mysql中(@i:=@i+1)的作用
  3. Swift 数字字符串格式化
  4. 6.8 程序示例--二分 K-Means-机器学习笔记-斯坦福吴恩达教授
  5. 第四章 数学知识【完结】
  6. 有关计算机基础的论文,有关计算机基础论文范文.doc
  7. 人工智能不是计算机领域能学么,华南理工大学《高级人工智能》考试真题1
  8. 微信授权获取用户openid前端实现
  9. 三载春秋随风去,而今迈步从头越
  10. 让领导狂夸,让业务目瞪口呆的报表,竟然是这样?
  11. Mac在github中管理自己的代码(入门篇)
  12. 快速用JavaScript实现划词取词,可复制百度文库文字(获取鼠标选中区域文字)
  13. 海尔简爱s11怎么进入bios_海尔笔记本如何进入BIOS设置_海尔笔记本进入bios方法...
  14. 数独高级算法,直接复制到网页,即可结题
  15. 你的小程序可以接广告赚钱了
  16. deb 中标麒麟_最新版国产Linux操作系统“中标麒麟”体验
  17. FPGA中ISE软件调用IP核导入(.coe)文件并绘制正弦函数
  18. 在一幅图中为箱线图设置不同颜色
  19. 学习编写自动化测试脚本——用脚本取代键盘鼠标操作浏览器
  20. 如何找到 java 程序 CPU 使用率100%的原因

热门文章

  1. uber-zap_如何构建自己的Uber-for-X应用程序(PART 2)
  2. 109_Power Pivot客户ABC(帕累托)分析度量值写法(非计算列)
  3. java中自定义输入数字格式_Java 创建并使用自定义数字格式、35;###、####.#####和语言环境...
  4. redis主从复制和哨兵机制
  5. Python GUI篇——关不掉的小窗口
  6. Ajax跨域请求与解决方案
  7. Zigbee网络架构+ZigBee的体系结构+理解zigbee节点的实现的案例+“51单片机” 和 “zigbee” 、 “cc2530芯片” 之间的关系+芯片cc2530
  8. word2003文档题注
  9. Div+CSS布局入门教程(二) 写入整体层结构与CSS
  10. mysql 分库分表 建表,mysql 分库分表 建表MySQL常用操作