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

[复制链接]
2314|6
手机看帖
扫描二维码
随时随地手机跟帖
zhazhahua|  楼主 | 2017-9-2 16:49 | 显示全部楼层 |阅读模式
程序是,根据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);
        }
}

串口打印出来的结果

有人知道该怎么做吗?
[img]file:///C:\Users\ytxkj\AppData\Roaming\Tencent\Users\530807798\QQ\WinTemp\RichOle\C@TFSVKX8)1~6HB75`7RJ@L.png[/img]

串口显示

串口显示

相关帖子

zhazhahua|  楼主 | 2017-9-2 16:50 | 显示全部楼层
我试过把管脚拉高,但是不管是那个脚拉高都是打印出来的值是0?很奇怪。

使用特权

评论回复
zhazhahua|  楼主 | 2017-9-2 16:52 | 显示全部楼层
麻烦各位帮帮忙,看看

使用特权

评论回复
dirtwillfly| | 2017-9-3 09:27 | 显示全部楼层
什么mcu?

使用特权

评论回复
zhazhahua|  楼主 | 2017-9-3 10:21 | 显示全部楼层

STM32F103CBT6

使用特权

评论回复
易水残虹| | 2017-9-6 10:48 | 显示全部楼层
首先,你查看一下自己的代码,引脚初始化配置有没有问题,时钟使能、IO初始化以及复用功能等;没有问题的话,你可以先试试将IO口置高置低,输出方波形式,然后用万用表检测一下IO口的电压或者示波器查看一下波形,看看IO口是否能正常输出,如果不能正常输出,可能是芯片的这几个引脚烧坏了。

使用特权

评论回复
zhazhahua|  楼主 | 2017-9-6 11:30 | 显示全部楼层
易水残虹 发表于 2017-9-6 10:48
首先,你查看一下自己的代码,引脚初始化配置有没有问题,时钟使能、IO初始化以及复用功能等;没有问题的话 ...

忘记说了,我已经解决问题了。不过我之前找问题也是跟你说的一样,后来发现我在那个函数里面的宏没有打开,所以没有编译到。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

274

帖子

2

粉丝