STM32cube HAL库 UART串口中断方式收发任意长度 调试笔记
来源:互联网 发布:sql select语句 包含 编辑:程序博客网 时间:2024/06/05 15:50
STM32Cube对于新项目的开发能节省不少时间,从繁琐芯片初始化中解脱出来
1.STM32 UART初始化部分,配置好工程,采用STM32cube生成代码,初始化即已经完成。
2.串口中断方式的发动作:HAL_UART_Transmit_IT
没做任何处理的情况下,我们在程序中使用printf会把信息打印到显示屏中去,这时我们需要将printf重定向就能将printf的消息打印到串口中 去。在主函数中添加如下函数:
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit_IT(&huart1, (uint8_t *)&ch, 1);
osDelay(1);
return 0;
}
//即完成重定向,执行printf即能将任意长度的字符发送到串口中。
3.串口中断的收动作:HAL_UART_Receive_IT
HAL_UART_Receive_IT(&huart1,(uint8_t *)&value,1);//程序不会在这个语句停留,直接会按照中断方式把接收数据存放在value中,但是这个语句只能使能一次串口中断。所以要在中断服务函数或者回调函数中重新使能
代码:
//接收缓存初始化
#define MAX_RECV_LEN 1024
uint8_t msg_buff[MAX_RECV_LEN] = {0};uint8_t * msg = msg_buff;static int flag = false;
//接收中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) { uint8_t ret = HAL_OK; msg++; if( msg == msg_buff + MAX_RECV_LEN) { msg = msg_buff; } do { ret = HAL_UART_Receive_IT(UartHandle,(uint8_t *)msg,1); //重新使能中断 }while(ret != HAL_OK); //等待接收所有字符 flag = true; //代表接收完成}
void uart_main(void){ extern UART_HandleTypeDef huart1; HAL_UART_Receive_IT(&huart1, (uint8_t *)msg, 1); //开启第一次中断 while(1) { if (flag == true) { printf("msg_buff = %s\r\n",msg_buff); memset(msg_buff, 0, sizeof(msg_buff)); // 指向接收缓存的头部 msg = msg_buff; (&huart1)->pRxBuffPtr = msg; flag = false; } osDelay(10); }}
阅读全文
2 0
- STM32cube HAL库 UART串口中断方式收发任意长度 调试笔记
- 基于HAL库处理UART中断并接收串口传入的数据
- 串口1自收发—中断方式
- stm32l011F4之 HAL库串口不定长收发(fifo接收)
- S3C2440 UART中断方式
- STM32L152 USART HAL库接收任意长度数据详细解析
- MTK之UART串口收发数据
- MTK之UART串口收发数据
- STM32CubeMX 串口空闲中断加DMA 实现不定长度收发数据
- STM32F4的HAL库开启串口空闲中断
- STM32 HAL 库, 配置串口DMA接收及空闲中断
- MC9S12XDP512串口使用笔记(中断方式)
- MC9S12XDP512串口使用笔记(中断方式)
- mini2440+jlink v8+mkd4.54 uart串口通信调试心得体会(11.20补完中断部分)
- 串口uart调试小小结
- c51 uart串口乱码调试
- HAL库-STM32F4 UART-IT
- UART通信程序-中断方式
- mysql优化经验总结
- 初识JDBC --- 人生如只如初见,何必强求只一遍
- java调用Kotlin方法的参数为null异常问题
- html标签logo图片怎么添加上去的
- oracle 的4个循环例子
- STM32cube HAL库 UART串口中断方式收发任意长度 调试笔记
- 编译原理词法分析小程序的设计
- 利用x64_dbg破解一个最简单的64位小程序
- 框架配置----Struts2
- SVO、LSD分析
- 孩子们的游戏(圆圈中最后剩下的数)
- iOS绘图CALayer、UIBezierPath运用(边框、填充、复制、渐变)
- Deep Residual Learning for Image Recognition(ResNet)论文笔记
- 【AngularJS2】Angular核心模块介绍