cubemx stm32 配置两个串口_STM32CubeMX的串口配置,以及驱动代码
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的串口配置,以及驱动代码相关推荐
- stm32捕获占空比_【电机控制】六步法驱动BLDC电机,使用硬件COM事件,STM32+CUBEMX(HAL库)配置...
现在我也只能说是电机入门,但是想要把电机作为终身事业,从有霍尔到无霍尔,从方波到正弦波,现在把其中的一些知识点分享出来,因为电机控制其实的资料比较难找的,前人栽树,后人乘凉,如果我有什么错误,在知乎上 ...
- CubeMX STM32串口1DMA使用IDLE中断接收、串口2DMA接收DMX512信号(标准)
CubeMX STM32串口1DMA使用IDLE中断接收.串口2DMA收发DMX512信号(标准) DMX512协议 CubeMX 代码部分 串口1 串口2 外部中断 定时器1 总结 DMX512协议 ...
- cubemx stm32 陶晶驰 串口屏 基于YXY通信原理的串口屏驱动代码
陶晶驰串口屏 资料 陶晶驰串口屏是本质是一个MCU,屏幕是MCU的模块,一般是一块TFT屏幕.在串口屏厂商提供的软件上面编写界面,然后通过串口直接烧到串口屏的MCU上,然后在屏幕上展示出来. 串口屏资 ...
- STM32串口的使用(原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯)
参考:串口的结构体 重定向printf串口发送stm32等博文 作者:点灯小哥 发布时间: 2021-03-06 21:46:33 网址:https://blog.csdn.net/weixin_46 ...
- 基于stm32的两轮自平衡小车4(软件调试篇)
本篇是软件调试篇,接上一篇硬件篇:基于stm32的两轮自平衡小车3(硬件篇),本篇内容是对硬件部分的软件实现,具体模块详见目录.这里先上效果:转B站 目录 定时器PWM驱动程序 定时器编码器模式驱动程 ...
- STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL)
STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL ) STM32的USB功能模块可以配置为虚拟串口(VCOM: Visual Port Com)或人机交互设备(HID: Hu ...
- tm4c123gxl库函数调包侠养成(四)——————串口发送的基本配置
电赛将至,笔者也是终于想起自己还有个CSDN账号,前来更新一下帖子,顺便复习一下单片机知识. 一.串口概述 串口是单片机不可缺少的功能之一,通过串口单片机可以与电脑或是另一块单片机进行通信,在电赛中, ...
- STM32之USART-串口通信(含串口实验详细解析)
STM32之串口通信 - USART(含串口实验详细解析) 开发环境:Window 10 开发工具:Keil uVision5 MDK 硬件:STM32F103 资料参考: [正点原子]STM32F1 ...
- 【STM32学习笔记】(9)——串口通讯(USART)详解
本文主要参考了野火的零死角玩转STM32和正点原子的STM32F1 开发指南 V1.1(精英板-库函数版本),文章中大部分知识都是从两本书中提取出来,串口通信协议的知识主要参考野火的书籍,而串口实验部 ...
最新文章
- 百度2016笔试题第一题:页面请求失败值
- Mysql中(@i:=@i+1)的作用
- Swift 数字字符串格式化
- 6.8 程序示例--二分 K-Means-机器学习笔记-斯坦福吴恩达教授
- 第四章 数学知识【完结】
- 有关计算机基础的论文,有关计算机基础论文范文.doc
- 人工智能不是计算机领域能学么,华南理工大学《高级人工智能》考试真题1
- 微信授权获取用户openid前端实现
- 三载春秋随风去,而今迈步从头越
- 让领导狂夸,让业务目瞪口呆的报表,竟然是这样?
- Mac在github中管理自己的代码(入门篇)
- 快速用JavaScript实现划词取词,可复制百度文库文字(获取鼠标选中区域文字)
- 海尔简爱s11怎么进入bios_海尔笔记本如何进入BIOS设置_海尔笔记本进入bios方法...
- 数独高级算法,直接复制到网页,即可结题
- 你的小程序可以接广告赚钱了
- deb 中标麒麟_最新版国产Linux操作系统“中标麒麟”体验
- FPGA中ISE软件调用IP核导入(.coe)文件并绘制正弦函数
- 在一幅图中为箱线图设置不同颜色
- 学习编写自动化测试脚本——用脚本取代键盘鼠标操作浏览器
- 如何找到 java 程序 CPU 使用率100%的原因
热门文章
- uber-zap_如何构建自己的Uber-for-X应用程序(PART 2)
- 109_Power Pivot客户ABC(帕累托)分析度量值写法(非计算列)
- java中自定义输入数字格式_Java 创建并使用自定义数字格式、35;###、####.#####和语言环境...
- redis主从复制和哨兵机制
- Python GUI篇——关不掉的小窗口
- Ajax跨域请求与解决方案
- Zigbee网络架构+ZigBee的体系结构+理解zigbee节点的实现的案例+“51单片机” 和 “zigbee” 、 “cc2530芯片” 之间的关系+芯片cc2530
- word2003文档题注
- Div+CSS布局入门教程(二) 写入整体层结构与CSS
- mysql 分库分表 建表,mysql 分库分表 建表MySQL常用操作