OpenEdv-开源电子网

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

串口出来的值一直显示是0,感觉很奇怪,有人遇到过吗?

[复制链接]

9

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2017-3-5
在线时间
74 小时
发表于 2017-9-2 17:01:00 | 显示全部楼层 |阅读模式
程序是,根据16个IO的高低电平决定一个变量的值,但是我在主函数用串口打印出来的值一直显示是0,有人遇到多这样情况吗?下面是程序。。。管脚的定义:
#define TALLY_1                        PBin(0)
#define TALLY_2                        PBin(1)
#define TALLY_3                        PBin(3)
#define TALLY_4                        PBin(4)
#define TALLY_5                        PBin(8)
#define TALLY_6                        PBin(10)
#define TALLY_7                        PBin(11)
#define TALLY_8                        PBin(12)
#define TALLY_9                        PBin(13)
#define TALLY_10                PBin(15)
#define TALLY_11                PCin(13)
#define TALLY_12                PCin(14)
#define TALLY_13                PCin(15)
#define TALLY_14                PAin(0)
#define TALLY_15                PAin(1)
#define TALLY_16                PAin(15)
变化的函数:
u8 Tally_Control()
{
        #ifdef RX_CRAD
        static u8 tally_data;
                if(TALLY_1)
                        tally_data=1;
                if(TALLY_2)
                        tally_data=2;
                if(TALLY_3)
                        tally_data=3;        
                if(TALLY_4)
                        tally_data=4;
                if(TALLY_5)
                        tally_data=5;
                if(TALLY_6)
                        tally_data=6;
                if(TALLY_7)
                        tally_data=7;
                if(TALLY_8)
                        tally_data=8;
                if(TALLY_9)
                        tally_data=9;
                if(TALLY_10)
                        tally_data=10;
                if(TALLY_11)
                        tally_data=11;
                if(TALLY_12)
                        tally_data=12;
                if(TALLY_13)
                        tally_data=13;
                if(TALLY_14)
                        tally_data=14;
                if(TALLY_15)
                        tally_data=15;
                if(TALLY_16)
                        tally_data=16;
                return tally_data;
        #endif
}

主函数:
int main(void)
{         
        u8 t=0;                        
        
        NVIC_Configuration();                     
        delay_init();        
        uart_init(115200);         
        NRF24L01_Init();
                 

        LED_Init();
        KEY_Init();        
            
        Get_addr();
        RF_Init();
        printf("RF_Init()\r\n");
    RF_send_data( );
        //RX_Mode();
        while(1)
        {
                if(KEY0==0)
                {
                        while(KEY0==0);
                        TalkRegister();
                }
               
                if(USART_RX_STA&0x8000)
                {
                        
                        USART_RX_STA =0;
                        Tally_send(USART_RX_BUF[0]);
                }
                Tally_send(Tally_Control());
                printf("tally_control %d\r\n",Tally_Control());
                //Tally_send(1);
                delay_ms(100);
        }
}

串口打印出来的结果


有人知道该怎么做吗?


请指教

串口显示结果

串口显示结果
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-2 18:45:20 | 显示全部楼层
本帖最后由 huanghan 于 2017-9-2 18:49 编辑

Tally_Control()不用看了,你的配置有问题,下面的定义是实现读IO的输入状态或者是读IO输出状态,具体要看代码怎么配置,就下面的定义看不出来#define TALLY_1                        PBin(0)
#define TALLY_2                        PBin(1)
#define TALLY_3                        PBin(3)
#define TALLY_4                        PBin(4)
#define TALLY_5                        PBin(8)
#define TALLY_6                        PBin(10)
#define TALLY_7                        PBin(11)
#define TALLY_8                        PBin(12)
#define TALLY_9                        PBin(13)
#define TALLY_10                PBin(15)
#define TALLY_11                PCin(13)
#define TALLY_12                PCin(14)
#define TALLY_13                PCin(15)
#define TALLY_14                PAin(0)
#define TALLY_15                PAin(1)
#define TALLY_16                PAin(15)

回复 支持 反对

使用道具 举报

9

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2017-3-5
在线时间
74 小时
 楼主| 发表于 2017-9-3 11:55:28 | 显示全部楼层
huanghan 发表于 2017-9-2 18:45
Tally_Control()不用看了,你的配置有问题,下面的定义是实现读IO的输入状态或者是读IO输出状态,具体要看 ...

能具体一点?有点不懂
回复 支持 反对

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-3 12:56:07 | 显示全部楼层
意思是IO配置有问题
回复 支持 反对

使用道具 举报

9

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2017-3-5
在线时间
74 小时
 楼主| 发表于 2017-9-3 22:59:29 | 显示全部楼层
huanghan 发表于 2017-9-3 12:56
意思是IO配置有问题

配置有问题?我在另外一个地方已经初始化IO口啦,这是用宏定义代替这个IO口啊
回复 支持 反对

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-3 23:21:56 | 显示全部楼层
从程序上看,只有Tally_Contro()函数里的if条件一个都不成立啊
回复 支持 反对

使用道具 举报

9

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2017-3-5
在线时间
74 小时
 楼主| 发表于 2017-9-4 09:37:33 | 显示全部楼层
huanghan 发表于 2017-9-3 23:21
从程序上看,只有Tally_Contro()函数里的if条件一个都不成立啊

我MCU外一个元器件,会改变IO口的状态啊
回复 支持 反对

使用道具 举报

9

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2017-3-5
在线时间
74 小时
 楼主| 发表于 2017-9-4 10:48:25 | 显示全部楼层
huanghan 发表于 2017-9-3 23:21
从程序上看,只有Tally_Contro()函数里的if条件一个都不成立啊

问题解决了,不是IO口配置问题,是一个宏没有打开。但是新的问题来了,为什么改变的值总是13呢
回复 支持 反对

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-4 11:15:00 | 显示全部楼层
其他IO也可能是同样问题,工程上传看看,这样靠猜不是办法
回复 支持 反对

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-9-4 11:43:31 | 显示全部楼层
openedvxiaowang 发表于 2017-9-4 10:48
问题解决了,不是IO口配置问题,是一个宏没有打开。但是新的问题来了,为什么改变的值总是13呢

多使用万用表量下硬件先,然后再去找软件问题,这是一种习惯。
自己选择的路,成家前走完。
回复 支持 反对

使用道具 举报

9

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2017-3-5
在线时间
74 小时
 楼主| 发表于 2017-9-5 10:33:54 | 显示全部楼层
aiyeba 发表于 2017-9-4 11:43
多使用万用表量下硬件先,然后再去找软件问题,这是一种习惯。

昨天用万用表量了电路,发现一个IO口的电阻虚焊了,,一直被拉高。已经搞定了,谢谢哈!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 21:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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