完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F405做的实验
首先我定义了3字节的数组 UART_HandleTypeDef huart2; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ uint8_t uart_receive[3]={0}; //看这里 uint8_t uart_transmit[3]={0}; uint16_t uart_len =3; uint8_t *uart_recv =(uint8_t *)&uart_receive; uint8_t *uart_tran =(uint8_t *)&uart_transmit; /* USER CODE END PV */ 然后再main()里面开接收中断 MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ HAL_UART_Receive_IT(&huart2,uart_recv, uart_len); //看这里 再然后中断里什么都没写 void USART2_IRQHandler(void) { HAL_UART_IRQHandler(&huart2);//清中断 HAL_UART_Receive_IT(&huart2,uart_recv, 1);//开中断 } 上位机随意发送3字节,进了3次中断 所以,STM32FCUBEMX的UART进中断 不是根据用户数组字节长度进中断,而是接一字节进一次中断 所以长数组接收的,或者较高波特率通讯的,最好不要在中断里做数据处理 |
|
相关推荐
11个回答
|
|
本帖最后由 0721de 于 2016-5-9 16:22 编辑
当中断次数达到数组长度时,会关闭接收中断 所以HAL_UART_Receive_IT(&huart2,uart_recv, uart_len); 的意思是开uart2接收中断,完成uart_len次中断后, 在HAL_UART_IRQHandler(&huart2)里关闭中断 为什么HAL_UART_Receive_IT()的uart_len会影响中断次数呢? 因为 uart_len在HAL_UART_Receive_IT()中传递给了RxXferCount 中断里HAL_UART_IRQHandler()里面有UART_Receive_IT() 而UART_Receive_IT(huart)里面有RxXferCount自减 |
|
|
|
感谢分享 楼主 什么时候能发一个关于HAL_UART_Transmit()和HAL_UART_Receive()分析的帖子呢 我不是很明白这两个函数的意思 就不知道怎么用 希望楼主能写一个
|
|
|
|
|
|
|
|
楼主:每次接收中断里uart_receive指针好像应该++?
|
|
|
|
在接收中断中要将所接收数据放入缓存,并将接收缓存指针下移。
|
|
|
|
因为ST的MCU没有FIFO,所以操作UART、I2C等时还是使用DMA更好些
|
|
|
|
STM32F4的Usart接收数据如果不使用DMA的话肯定是中断一次接收一个字节,至于是否能在中断里面处理数据要具体情况具体分析...
为什么HAL_UART_Receive_IT()的uart_len?应该是MxCube对串口接收进行了封装,对串口接收数据提供了几种接口,你可以找MxCube相关的文档看看... |
|
|
|
非固定长度报文的 协议,DMA用起来还是比较不方便的。 比如modbus。 |
|
|
|
ST提供了一份文档 介绍使用DMA超时方式接收不定长报文的方法,你可以找一下(我忘记文档号了),就在使用说明里面 主要方式就是使用DMA模拟了FIFO,解决了STM32没有FIFO的问题,当然了,虽然解决了问题,但是从开发者角度和系统性能而言还是不如FIFO,不知为何ST为何不为通讯提供FIFO,成本没多少的,唉!一个公司一个发展思路,既然图便宜了,那么就免不了在很多地方要凑合一下。 |
|
|
|
涨姿势了,下次去看看。 |
|
|
|
学习了 刚好要用。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
使用stm32l451片子,对ad7606进行3通道100k采样值跳动问题?
1027 浏览 1 评论
STM32进行DMA数据转运,为什么只有A组最后一位数据被转运到B组去?
1516 浏览 2 评论
1828 浏览 3 评论
1421 浏览 0 评论
嵌入式开发 Win11安装ST-Link 提示 设备描述符请求失败 怎么处理?
1557 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-24 20:08 , Processed in 0.841381 second(s), Total 93, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号