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);
}
讲解到此结束,喜欢的点个赞,不懂的私信我。一起学习与进步。流水长秀。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值