你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L051开机串口接收数据出问题

[复制链接]
ldqmoon 提问时间:2018-4-17 22:21 /
本帖最后由 ldqmoon 于 2018-4-17 22:39 编辑

按下面这个方式来写的串口接收程序,中断方式
刚开机的时候,经常接收不到数据, 调试发现只能接收到第一个字节,上位机多发几次才能收到。

网上查了一些资料,说是中断程序太长导致, 可我的这个程序不长啊, 仅仅就是把接收到的数据放到buff中
麻烦大家分析一下

补充一下:  这个程序在正常运行后就不会再出问题

#define MAX_RECV_LEN 2048
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;
          if(UartHandle==(&huart1))
                {
    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;
        }
}





main()中

memset(msg_buff, 0, sizeof(msg_buff));
msg = msg_buff;  

        printf("hello world\r\n");
        HAL_UART_Receive_IT(&huart1, (uint8_t *)msg, 1);  //启动第一次中断
  do{
                if(flag==TRUE)
                {
              // doing something
      memset(msg_buff, 0, sizeof(msg_buff));
      msg = msg_buff;
      (&huart1)->pRxBuffPtr = msg;      
      flag = FALSE;     
                }
        }while(!exitflag);




收藏 评论4 发布时间:2018-4-17 22:21

举报

4个回答
feixiang20 回答时间:2018-4-17 23:22:54
检查下初始化代码,是不是引脚问题,标志位问题呢

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wenyangzeng 回答时间:2018-4-18 07:21:01
本帖最后由 wenyangzeng 于 2018-4-18 07:25 编辑

中断函数里用上do{}很不合理。每次中断执行一次
ret = HAL_UART_Receive_IT(UartHandle,(uint8_t *)msg,1);
就应该返回了。


这个中断不是让你一直等到数据全部接收完才返回的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

bargagebaobei 回答时间:2018-4-18 07:57:28
do while 不好  去掉

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wudianjun2001 回答时间:2018-4-18 08:19:58
中断里不要有长时间的循环,这个是好习惯

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版