STM32 学习日记(二)流水灯的深度学习

流水灯
本章不讲解IO的定义,而是纯讲流水灯。
你会说流水灯有什么好说的,就是一个接一个点灯而已。
例如:
while(1)
{
LED3=0;
LED1=1;
delay_us(500);
LED1=0;
LED2=1;
delay_us(500);
LED2=0;
LED3=1;
delay_us(500);
}

这样不就是实现流水灯了吗?既简单,又实用,你又来水经验的吧!
本章为STM32 学习笔记,绝不水经验,为什么第二章为流水灯,应为我想讲解一下流水灯的真正的意义
首先提问的是:什么是流水灯?
会变化的灯。
然后提问的是:是什么控制灯的亮与灭
IO口的电平。
没错,我们要学习的就是IO口电平的控制
1.首先要懂得最基础的位设置。checkbit、setbit和clrbit。
学习流水灯,本就是学习位的设置。
checkbit 的学习,是我的博客,有参考代码例子
setbit 的学习,是我的博客,有参考代码例子
clrbit 的学习,是我的博客,有参考代码例子
2.学习如何使用上面的,checkbit、setbit和clrbit?
我来直接讲明。就是十六进制控制灯,一个十六进制能控制8个IO口
如:十六进制0xFF的二进制1111 1111 。
十六进制0x00的二进制0000 0000 。
这样就实现一个数控制八个IO口了。
checkbit 检测某个位的值
如:
LED1=checkbit(0x0F,7);
LED2=checkbit(0x0F,6);
LED3=checkbit(0x0F,5);
LED4=checkbit(0x0F,4);
LED5=checkbit(0x0F,3);
LED6=checkbit(0x0F,2);
LED7=checkbit(0x0F,1);
LED8=checkbit(0x0F,0);
那么1-4LED为(低电平),5-8为(高电平)。
setbit 使某个位的值设置为高电平
十六进制0x00的二进制0000 0000 。
a=0x00;
for(i=0;i<7;i++)
{
setbit(a,i);
LED1=checkbit(a,7);
LED2=checkbit(a,6);
LED3=checkbit(a,5);
LED4=checkbit(a,4);
LED5=checkbit(a,3);
LED6=checkbit(a,2);
LED7=checkbit(a,1);
LED8=checkbit(a,0);
}
clrbit 使某个位的值设置为底电平
十六进制0xFF的二进制1111 1111 。
a=0xFF;
for(i=0;i<7;i++)
{
clrbit(a,i);
LED1=checkbit(a,7);
LED2=checkbit(a,6);
LED3=checkbit(a,5);
LED4=checkbit(a,4);
LED5=checkbit(a,3);
LED6=checkbit(a,2);
LED7=checkbit(a,1);
LED8=checkbit(a,0);
}
讲解到此结束,喜欢的点个赞,不懂的私信我。一起学习与进步。流水长秀。

原创文章 21 获赞 6 访问量 5352

猜你喜欢

转载自blog.csdn.net/weixin_44244812/article/details/104365886