教学内容与重难点
【内容01】了解CC2530通用I/O端口的特点及资源分布。
【内容02】掌握将寄存器中某些位清0或置1的原理与操作。
【内容03】功能选择寄存器PxSEL和方向寄存器PxDIR的定义 。
【内容04】专创融合专题。
【重点】功能选择寄存器PxSEL和方向寄存器PxDIR的正确设置 。
【难点】掌握将寄存器中某些位清0或置1的原理与操作 。
教学单元核心内容与学习资源
CC2530端口引脚概述
【1】CC2530采用QFN40封装,有40个引脚。
【2】共有21个数字I/O端口,其中P0和P1是8位端口,P2仅有5位可以使用。
【3】在P2端口中,有2个引脚用作仿真接口,有2个引脚用作外部晶振,用户可用的只有P2_0,所以,在实际开发中,CC2530实际可用的I/O端口只有17个。
【4】每个数字I/O都可配置为通用I/O端口,或外部设备I/O。
【5】每个I/O端口都可以配置成外部中断源的输入引脚。
【6】对于输入端口,通过寄存器可配置为上拉或下拉模式。需要特别注意的是:P1_0和P1_1具没有上拉/下拉能力。
【7】P1_0和P1_1具备20mA高驱动输出,其余I/O引脚是4mA的驱动能力。
端口功能选择寄存器PxSEL。
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【6】。
端口方向选择寄存器PxDIR。
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【7】。
端口输入配置寄存器P0INP、P1INP、P2INP。
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【8】【9】【10】。
实训案例:LED灯闪烁实现的源码分析
新建工程,编写代码,在XMF09B/XMF09C开发套件上,完成以下任务:
1-编写普通延时函数Delay()。
2-编写端口初始化函数Init_Port()。
3-在main函数中,控制D4灯循环闪烁。
#include "ioCC2530.h"
#define D4 P1_1
/*=======================简单的延时函数========================*/
void Delay(unsigned int t)
{
while(t--);
}
/*=======================端口初始化函数========================*/
void Init_Port()
{
//将P1_1设为通用I/O端口
P1SEL &= ~0x02; //0000 0010 --> 1111 1101
//将P1_1设为输出方向
P1DIR |= 0x02; //0000 0010
}
/*==========================主函数============================*/
void main()
{
Init_Port(); //初始化D4灯的引脚
while(1)
{
D4 = ~D4; //将D4灯的开关状态取反
Delay(60000); //延时片刻
Delay(60000);
}
}
本课习题
【1】CC2530芯片共有_____个引脚,其中____个为可编程数字I/O引脚。
【2】CC2530的P0端口有____个引脚,P1端口有____个引脚,P2端口有____个引脚。
【3】CC2530的P1_0和P1_1引脚具有____驱动能力,其余I/O引脚具有____驱动能力。
【4】在进行CC2530程序设计的时候,为了可以方便的使用特殊功能寄存器的名字,要引入头文件____________________。
【5】在进行CC2530程序设计的时候,为了可以方便的使用特殊功能寄存器的名字,需要引入一个头文件,其C语言代码为_____________________________。
【6】选择P0端口功能的寄存器是__________,设置P1端口方向的寄存器是__________。
【7】将P0SEL寄存器的第2位、第3位和第6位清0,同时不能影响寄存器中的其他位,其C语言编程的语句是 _______________________。
【8】将P1SEL寄存器的第2位、第3位和第6位置1,同时不能影响寄存器中的其他位,其C语言编程的语句是________________________。
【9】将CC2530芯片的P1_0、P1_1和P1_4引脚设置为通用I/O功能,并且不影响其他引脚设置,其C语言编程的语句是__________________。
【10】将CC2530芯片的P0_1、P0_3和P0_6引脚设置为输出方向,并且不影响其他引脚设置,其C语言编程的语句是__________________。