OpenEdv-开源电子网

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

关于hal库 串口自发自收(及接收中断问题)

[复制链接]

18

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2015-8-22
在线时间
82 小时
发表于 2017-7-21 13:41:56 | 显示全部楼层 |阅读模式
总的来说  使用hal还是不太习惯
这里说一点 把tx和rx短接以后  自发自收问题
用hal本身的不好使,改良了 一下,  基本没问题
HAL_StatusTypeDef  HAL_UART1_Transmit_Personal(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{  
        u32 i=0;
        for(i=0;i<Size;i++)
        {
           HAL_UART_Transmit(huart,&pData,1,Timeout);
                         HAL_Delay(1);
                 HAL_UART_Receive_IT(huart,&RxBuff_Uart1,1);
        }
}


另外串口中断中
调用                                 while (HAL_UART_GetState(&huart1)!=HAL_UART_STATE_READY)//等待就绪
                                {
                                                        timeout++;////超时处理
                                                        if(timeout>maxDelay)
                                                        {
                                                                printf("huart1 error\r\n");
                                                           return ;
                                                        }               
                                }         
                                    timeout=0;
                                while(HAL_UART_Receive_IT(&huart1,&RxBuff_Uart1,1)!=HAL_OK)//重新配置为下次做准备
                                {
                                                        timeout++; //超时处理
                                                        if(timeout>maxDelay)
                                                        {
                                                                printf("huart1 error\r\n");
                                                           return ;
                                                        }                                                                       
                                }

程序运行时也需要上面操作,
  详情可以参考http://www.stm32cube.com/article/75
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-11-1
在线时间
50 小时
发表于 2017-8-28 09:07:40 | 显示全部楼层
赞一个,楼主写的文章挺不错
回复 支持 反对

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7136
金钱
7136
注册时间
2015-1-23
在线时间
105 小时
发表于 2017-8-28 10:00:09 | 显示全部楼层
楼主的逻辑有问题
串口要先开接收中断   再发送数据
HAL_UART_Receive_IT(huart,&RxBuff_Uart1,1);
HAL_Delay(1);
HAL_UART_Transmit(huart,&pData,1,Timeout);
                        
                 
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 19:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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