OpenEdv-开源电子网

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

串口放在主程序外正常,与正常程序一起就有问题。求指教

[复制链接]

5

主题

16

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-27
在线时间
7 小时
发表于 2020-4-27 14:35:17 | 显示全部楼层 |阅读模式
1金钱
      u8 tx = 0xaabb>>8;

        while( 1 )
        {
           #if 0
                IWDG_ReloadCounter();       


                LedBatteryIndicator();
                Check_System();
                System_Control();
               
                STMFLASH_Read(0X08004000,(u16*)datatemp,1);
                if(datatemp[0] != ( (Flag_2S << 3)|( FLAG_TIME << 2 ) | ( FLAG_SAFTY << 1 ) | Flag_Retract ))
                {
                        SystemState_Write();
                }


             UART_send_byte(2);
       
        //        UART_send_byte(tx);
                UART_send_byte(0xaabb&0xff);
       #endif
        UART_send_byte(0xaabb&0xff);
        }
问题描述:这样串口可以正常发送数据,发出数据aa

      u8 tx = 0xaabb>>8;
        while( 1 )
        {
           #if 1
                IWDG_ReloadCounter();       


                LedBatteryIndicator();
                Check_System();
                System_Control();
               
                STMFLASH_Read(0X08004000,(u16*)datatemp,1);
                if(datatemp[0] != ( (Flag_2S << 3)|( FLAG_TIME << 2 ) | ( FLAG_SAFTY << 1 ) | Flag_Retract ))
                {
                        SystemState_Write();
                }
                UART_send_byte(0xaabb&0xff);
       #endif
//        UART_send_byte(0xaabb&0xff);
        }
问题描述:串口发送放到这边发出的就是的,只是简单的取了个八位。

      u8 tx = 0xaabb>>8;
        while( 1 )
        {
           #if 0
                IWDG_ReloadCounter();       


                LedBatteryIndicator();
                Check_System();
                System_Control();
               
                STMFLASH_Read(0X08004000,(u16*)datatemp,1);
                if(datatemp[0] != ( (Flag_2S << 3)|( FLAG_TIME << 2 ) | ( FLAG_SAFTY << 1 ) | Flag_Retract ))
                {
                        SystemState_Write();
                }


             UART_send_byte(2);
       
                UART_send_byte(tx);
        //        UART_send_byte(0xaabb&0xff);
       #endif
        //UART_send_byte(0xaabb&0xff);
        }
问题描述:取八位赋值给一个变量再来发,又正常

问题:为什么直接取八位放到主程序里发送是有问题的,直接在飞思卡尔的单片机上这样都是ok的,用的iar编译器,目前是keil

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

2254

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4486
金钱
4486
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-4-27 15:47:49 | 显示全部楼层
回复

使用道具 举报

5

主题

16

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-27
在线时间
7 小时
 楼主| 发表于 2020-4-27 17:31:28 | 显示全部楼层
三叶草 发表于 2020-4-27 15:47
大小端模式不一样吧

大小端模式是啥?程序都没动过,放在外面就好,放到里面就不行
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2020-4-27 17:49:05 | 显示全部楼层
aabb&0xFF不是发的BB吗,建议仿真跟踪查看参数值变化来分析
回复

使用道具 举报

5

主题

16

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-27
在线时间
7 小时
 楼主| 发表于 2020-4-28 08:39:58 | 显示全部楼层
一起哈皮 发表于 2020-4-27 17:49
aabb&0xFF不是发的BB吗,建议仿真跟踪查看参数值变化来分析

是的bb我写错了,串口输出的值确实一堆莫名其妙的数字。只有定义个8位变量,变量=0xaabb&0xff。直接去输出变量才ok
回复

使用道具 举报

5

主题

16

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-27
在线时间
7 小时
 楼主| 发表于 2020-4-29 09:26:54 | 显示全部楼层
直接用库里的USART_SendData(USART1,(0xcc)); 就正常了,之前用的是  UART_send_byte()这个是自己写的,估计哪里还有不完善的地方
回复

使用道具 举报

5

主题

16

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-27
在线时间
7 小时
 楼主| 发表于 2020-4-29 09:27:31 | 显示全部楼层
一起哈皮 发表于 2020-4-27 17:49
aabb&0xFF不是发的BB吗,建议仿真跟踪查看参数值变化来分析

直接用库里的USART_SendData(USART1,(0xcc)); 就正常了,之前用的是  UART_send_byte()这个是自己写的,估计哪里还有不完善的地方
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 01:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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