配套资料链接: https://pan.baidu.com/s/1_sqXpUlzkaSbeNAq-q8PbQ 提取码: k54j
野火指南者用的8MHz的晶振,经过9倍频,最后的时钟频率达到72MHz,所以执行一段语句的时间为频率的倒数,即1/72 000 000 s,等同于1/72 us,那么,如果要延时一秒的话,就需要执行约14000次语句。
(当然函数名按自己的来随便改也是可以的)
void Delay(unsigned int i)
{
while(i--);
}

while(1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
Delay(14000000);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
Delay(14000000);
}
三、最后的效果GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
//将相关的引脚置位,拉高,默认为熄灭
while(1)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_5);//点亮红灯
Delay(14000000);
GPIO_SetBits(GPIOB, GPIO_Pin_5);//熄灭红灯
Delay(14000000);
}
LED灯颜色变换
端口号
引脚号

到代码中所要修改的就是(红色的部分):

同理,因为这个开发板RGB灯都是挂载到GPIOB这个IO口,所以初始化不同灯的GPIO的时候,只需要改变引脚即可,在以上的代码中追加:

然后main函数中的while中修改代码,使每间隔1秒灯交换亮:
while(1)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_5);//点亮红灯
GPIO_SetBits(GPIOB, GPIO_Pin_0);//熄灭绿灯
GPIO_SetBits(GPIOB, GPIO_Pin_1);//熄灭蓝灯
Delay(14000000);
GPIO_ResetBits(GPIOB, GPIO_Pin_0);//点亮绿灯
GPIO_SetBits(GPIOB, GPIO_Pin_5);//熄灭红灯
GPIO_SetBits(GPIOB, GPIO_Pin_1);//熄灭蓝灯
Delay(14000000);
GPIO_ResetBits(GPIOB, GPIO_Pin_1);//点亮蓝灯
GPIO_SetBits(GPIOB, GPIO_Pin_0);//熄灭绿灯
GPIO_SetBits(GPIOB, GPIO_Pin_5);//熄灭红灯
Delay(14000000);
}
至此,我们将02LED灯闪烁和颜色变换\点灯项目源代码\Output\led.hex文件利用mcuisp下载到板子里就可会发现三种色灯交替闪亮!
回复
举报
-
- db3a02be56634a7
-
0 发帖47 回复194 积分
- 私信他 +关注
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖

发帖
回复
楼主