完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32CUBEMX_HAL库 H750串口发送 接收固定长度
使用DMA和中断实现串口功能,接收固定长度字节。 若要实现任意长度字节,需要使用idle中断,后续补充。 使用stm32cubemx进行一些基础配置,生成初始化代码, HAL_UART_Transmit(&huart1,tx_buf,size,100 ); 发送函数,发送完直接接需要执行的操作,无需使用发送中断的函数HAL_UART_Transmit_IT(); 关于发送字符串,printf等函数,只需要重新写一下即可,网上例程很多。 需要注意的是在keil工程下需要勾选上Use MicroLIB这个选项,(程序编译不会报错,但是烧录进入,便会出现死机的感觉) DMA接收 HAL_UART_Receive_DMA(&huart1,rx_buf,1); 在初始化代码之后使用DMA接收函数,来使能中断,最后一个参数是size,表示接收到多少字节之后,进入回调函数,可以设置为1,那么接收到一个字节将进入中断,然后处理,但是这样会频繁进入中断, 串口中断回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { HAL_UART_Receive_DMA(&huart1, rx_buf, 1); HAL_UART_Transmit(&huart1, rx_buf, 1,100); } 在回调函数中需要使用HAL_UART_Receive_DMA(&huart1, rx_buf, 1); 重新使能中断,此处是将接收到的字节,再次发送。 还可以实现判断字节是否为帧尾,然后对一帧进行操作 ***注意:***串口回调函数中,操作尽量少,否则频繁进入中断会出错,例如在回调函数中加printf的语句,串口便不工作了。 串口接收不定长数据后面再记录(idle+dma)。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1937浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
553浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:56 , Processed in 0.713157 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号