闪灯程序

第一次接触这种东西,观摩了别人写的一个小程序.

#define PINSEL0    *(volatile unsigned *)(0xE002C000) 
#define IOIN          *(volatile unsigned *)(0xE0028000)
#define IOSET        *(volatile unsigned *)(0xE0028004)
#define IODIR        *(volatile unsigned *)(0xE0028008)
#define IOCLR       *(volatile unsigned *)(0xE002800C)

 

定义寄存器,闪灯程序需要将管腿设置为GPIO模式.PINSEL0是状态寄存器,表示各个管腿分别处于什么状态.当处于GPIO模式时,IODIR寄存器表示是输入还是输出.当输出时,IOSET和IOCLR是一对蛋疼的东西,令IOSET=1表示输出1,如果想输出0需要将IOCLR置为1.IOIN表示输入的值.

 

PINSEL0 &= 0;
IODIR |= 0x100;

GPIO对应的标号是00,第一句表示将所有的管腿置为GPIO模式.

在我这块板上灯是接在P0.8上的,所以第二句将IODIR的第8位(最低位为第0位)置为1,表示输出.

void flash(unsigned int fre, unsigned int time)
{
    while (time--)
    {
        IOSET = 0x100; //表示在第8位输出为1,灯灭.
        delay(fre);
        IOCLR = 0x100; //表示在第8位输出为0,灯亮.
        delay(fre);
    }
}

 

转载于:https://www.cnblogs.com/dramstadt/p/3256794.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值