OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4387|回复: 2

求助HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)这个函数怎么用..

[复制链接]

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2017-9-19
在线时间
33 小时
发表于 2018-10-30 15:01:54 | 显示全部楼层 |阅读模式
5金钱
想用RS485以中断的方式发送,尝试使用寄存器不成功。改为HAL库。
有没有大神知道HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)这个函数怎么用啊。

我打开发送中断,然后调用这个函数,怎么没有反应呢?有没有用过的大神,求救啊。。。。。小弟感激不尽。。

最佳答案

查看完整内容[请看2#楼]

说明也是不成功。。。继续努力吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-10-30 15:01:55 | 显示全部楼层
说明也是不成功。。。继续努力吧
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2017-9-19
在线时间
33 小时
 楼主| 发表于 2018-10-31 09:28:10 | 显示全部楼层
正点原子 发表于 2018-10-31 01:38
说明也是不成功。。。继续努力吧

谢谢原子哥,最后我还是用的寄存器,首先打开中断,先往发送数据寄存器写第一个数,串口传送出去第一个数后会引发中断,中断后往发送数据寄存器写第二个数,中断返回,串口传送出去第二个数,再引发中断,写第三个数。。。。
代码如下:
if((USART2->SR)&(1<<7))               //发送数据寄存器为空
                {                         
                          USART2->DR =rs485buf1[count];     //给发送数据寄存器数据
                          count++;
                }       
                if(count>4){
                          
                                __HAL_UART_DISABLE_IT(&USART2_RS485Handler,UART_IT_TXE);
                                RS485_TX_Set(0);
                         count=1;
                        }

但是当我发送最后一个字节转为接收时,最后一个字节发的不对,会有FF、FE错误。我从网上看到用延时一下,来保证最后一个字节发送完成之后在转为接收状态。但我不想用延时,这个问题又不知道怎么解决了。求救啊,麻烦指点一二。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 17:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表