哈哈哈,最近入手了CC2541这块板子,废话不多说了,今天点灯,什么都不会我只会点灯
CC2540共有21个IO口。不使用的IO可配置为上拉电阻的IO输入。引脚可悬空。如果设置输出的话可根据实际情况进行接地或接VCC。
芯片内部与IO口相关的寄存器如下:
P0, P1, P2:Px端口
PERCFG:外设控制寄存器
6:T1CFG定时器1的IO位置(0:备用位置1;1:备用位置2)
5:T3CFG
4:T4CFG
1:U1CFG
0:U0CFG
APCFG:模拟外设IO配置
模拟外设I/O配置。APCFG[7:0]选择P0.7 - P0.0作为模拟I/O
0:禁用;1:使能
P0SEL 、P1SEL、P2SEL :端口0、1、2功能选择寄存器
P0.7到 P0.0功能选择
0:通用IO; 1:外设功能
P2SEL (0xF5)–端口 2 功能选择和端口 1 外设优先级控制
[2:0]:与前面相同,为P2.4、P2.3、P2.0的外设功能
[6:3]: 端口1外设优先级控制
PRI0P3、PRI0P2、PRI0P1、PRI0P0
P0DIR、P1DIR、P2DIR :端口 0、1、2 方向寄存器
0:输入; 1:输出
P2DIR :端口2方向和端口0外设优先级控制
[7:6]: 端口0外设优先级控制。当PERCFG分配给一些外设到相同
引脚的时候,这些位将确定优先级。
[4:0]:0:输入, 1:输出
P0INP、P1INP、P2INP :端口0、1、2 输入模式寄存器
0:上拉/下拉(见P2INP (0xF7)–端口2输入模式)
1:三态
P1.1、P1.0没有上下拉模式
P2INP :端口2 输入模式寄存器
[7:5]: PDUP2(0上拉,1下拉);PDUP1,PDUP0
[4:0]:P2.0-P2.4的输入模式(同P0、P1)
P0IFG、P1IFG、P2IFG :端口 0、1、2中断状态标志寄存器
位7到位0输入中断状态标志。当输入端口中断请求未决信号时,其相应的标志位将置1。
Note:P2IFG[5]:DPIF USB D+中断状态标志。当D+线有一个中断请求未决时设置该标志,用于检测USB挂起状态下的USB恢复事件。当USB控制器没有挂起时不设置该标志。
PICTL :中断边缘寄存器,设置上升沿或下降沿的中断触发。
P0IEN、P1IEN、P2IEN :端口0、1、2 中断掩码寄存器
0:禁止; 1:使能
PMUX :掉电信号 Mux 寄存器
OBSSEL0、OBSSEL1、OBSSEL2、OBSSEL3、OBSSEL4、OBSSEL5 :观察输出控制寄存器 0、1、2、3、4、5
操作普通IO口时,需要注意如下:
在复位时,Px = 0xFF;方向PxDIR = 0x00;所以为普通功能上拉输入。
例如:操作P0
P0 = 0x0f; // 先写P0端口值
APCFG = 0x00; // 模拟外设配置,禁止模拟,只有P0才有模拟外设
P0SE = 0x00; // 选择通用IO口功能,为1表示外设功能(second)
P0DIR = 0xff; // 选择输出,为0表示输入
//如果选择了IO口的外设,还需要配置P2DIR,外设优先级
P0INP = 0x00; // P0的输入模式,0表示有上下拉,1表示3态
P2INP = P2INP & 0xEF; // 清除第5位,0:上拉,1:下拉
剩下点灯代码:
void main(void)
{
P0DIR |= 0x02; //设置LED灯相关IO口
while(1) //死循环
{
P0_1=1;
DelayMs(1000);
P0_1=0;
DelayMs(1000);
}
}