微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > CC2530 IO口初始化

CC2530 IO口初始化

时间:10-02 整理:3721RD 点击:

现CC2530使用Zstack 2.5.1a做应用,在用户程序中需要初始化P0.3 0.4 0.5 0.6四个IO口为高,但是经过IO的模拟/数字配置,输入/输出配置,上拉/下拉配置之后,P0.3 0.4 0.6都能输出高,就P0.5始终输出为低。请问可能是什么原因呢,再就是zstack自带的初始化是在用户APP初始化之前还是之后呢,会不会是由于zstack的初始化在用户APP之后引起的呢?谢谢!

下面的是我试过的方式一: #define LED_Switch1 P0_3 //mode A #define LED_Switch2 P0_4 //mode B #define LED_Switch3 P0_5 //mode C #define LED_Switch4 P0_2 //mode C #define Solution0 LED_Switch1=1;LED_Switch2=0;LED_Switch3=0; //A P0.3 #define Solution1 LED_Switch1=1;LED_Switch2=1;LED_Switch3=0; //B P0.3+P0.4 #define Solution2 LED_Switch1=0;LED_Switch2=1;LED_Switch3=0; //C P0.4 #define Solution3 LED_Switch1=0;LED_Switch2=1;LED_Switch3=1; //A+B P0.4+P0.5 #define Solution4 LED_Switch1=0;LED_Switch2=0;LED_Switch3=1; //B+C P0.5 #define SolutionC LED_Switch1=0;LED_Switch2=0;LED_Switch3=0; //close all 下面的是方式二: #define Solution0 P0 = 0x34; //A P0.3 #define Solution1 P0 = 0x24; //B P0.3+P0.4 #define Solution2 P0 = 0x2C; //C P0.4 #define Solution3 P0 = 0x08; //A+B P0.4+P0.5 #define Solution4 P0 = 0x18; //B+C P0.5 #define SolutionC P0 = 0xFF; //close all 下面是对IO的初始化: PERCFG |= 0x43; //timer1 io 备用2 P0SEL = 0xC0; //1:外设,0:普通IO;timer1 通道4 P0_6 0xcc for uart 0xc0 no uart P0DIR |= 0x7C; //0:输入,1:输出; P0INP &= 0x83; //P0.5上拉 0上下拉,由2定。1000 0011 2,3,4,5,6上拉 P2INP &= 0xDF; //P0上拉 0上拉 1101 1111 //P1口的0用于测试PWM用 P1SEL |= 0x01; //1:外设,0:普通IO;timer2 通道2 LED1 P1_0 P1DIR |= 0x01; //0:输入,1:输出; P0 |= 0x7C; // |0x7C初始化P0.2 0.3 .4 .5 .6为高 0111 1100 //ADC设置 APCFG = 0x80; //P0.7用作模拟口 下面是函数调用: switch(Data_Buf[3]) { case 0: { Solution0; }break; case 1: { Solution1; }break; case 2: { Solution2; }break; case 3: { Solution3; }break; case 4: { Solution4; }break; default : break; } 现象是0.4始终为低,但是我如果去掉宏定义时的LED_Switch4(P0.2),那么就是0.5口始终为低。

我们的协议栈的硬件平台是基于SmartRF05EB+CC2530EM来的,

在协议栈里面

P0.2用做UART_RX

P0.3用作UART_TX

P0.4用作UART_CTS

P0.5用作SPI 的MOSI

具体你可以在TI官网搜索SmartRF05EB,CC2530EM都能找到对应的user guide

我用P0_0口作为输出口,该口在APP层文件下void GenericApp_Init(byte task_id)函数中写了P0_0=0;强制P0.0口复位,下面就没对P0.0再做处理,但是,在程序跑起来之后,P0_0自己又置一了,我怀疑是协议栈中对IO口的初始化在void GenericApp_Init(byte task_id)函数之后,请问,协议栈中对IO口处理的代码在哪里?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top