标题: 关于单片机C语言简单小程序,求大神指点,谢谢 [打印本页]

作者: 永恒动力    时间: 2021-4-2 11:33
标题: 关于单片机C语言简单小程序,求大神指点,谢谢
1空到4空,我搞不懂,求大神解释下,IO0SET为GPIO 输出置位寄存器,写入1是,置引脚为高电平,
IO0CLR 为GPIO 输出清零寄存器,写入1时,置引脚为低电平。
求大神解释下1-4空,最后附图的答案有啥作用?


作者: zhouwenhua1998    时间: 2021-4-2 16:12
不太懂stm32,可以去阅读下相关书籍
作者: 聆烟雨    时间: 2021-4-2 18:47
本帖最后由 聆烟雨 于 2021-4-2 19:36 编辑

IO0SET = ~LED_ON;
如果 LED_ON_Num = 1, 那么 LED_ON = 0x01, 取反后为 ...111110(二进制), 前面很多1, 省略不写了。
这句意思就是 让 IO0SET 寄存器 除了第一个 bit 之外, 其他 bit 都为 1(置引脚为高电平)。

IO0CLR = LED_ON;
这句意思就是 让 IO0CLR 寄存器 的第一个 bit 为 1(置引脚为低电平)。
由电路图可知, 引脚为低电平, LED 会亮。那此时 D1 点亮,其他不亮。

LED_ON <<= 1;
这句意思就是 LED_ON 左移 1 bit, 就是本来控制第一个 IO, 现在左移了, 要去控制 第二个 IO

if( LED_ON_Num++ == 4 )
这句意思就是 如果循环点亮到 第 4 个灯, 这就不能继续了, 要恢复 LED_ON 、 LED_ON_Num 为原来的值, 因为只有 4 个灯。
作者: 永恒动力    时间: 2021-4-3 21:03
聆烟雨 发表于 2021-4-2 18:47
IO0SET = ~LED_ON;
如果 LED_ON_Num = 1, 那么 LED_ON = 0x01, 取反后为 ...111110(二进制), 前面很 ...

大神很给力了,非常感谢,LED_ON_Num=1这个是什么意思?还请大神解释下,谢谢!
作者: ANKA    时间: 2021-4-3 23:14
LED_ON_Num=1  IO口置1
作者: 永恒动力    时间: 2021-4-4 17:16
ANKA 发表于 2021-4-3 23:14
LED_ON_Num=1  IO口置1

就是置GPIO为输出吗?LED_ON表达的是什么意思?
作者: 永恒动力    时间: 2021-4-4 17:17
ANKA 发表于 2021-4-3 23:14
LED_ON_Num=1  IO口置1

就是置GPIO为输出吗?LED_ON表达的是什么意思?谢谢你!
作者: GlenXu    时间: 2021-4-4 20:55
LED_ON_Num=1
是if (LED_ON_Num == ?)后回复计数初值的。
即重新开始计数的意思。
作者: glinfei    时间: 2021-4-4 23:15
永恒动力 发表于 2021-4-4 17:17
就是置GPIO为输出吗?LED_ON表达的是什么意思?谢谢你!

LED_ON_Num 是个变量啊,计数用的,就是第几个灯亮,超过总数4就重置为1.跟IO没关。是怕看不懂才设的,否则直接用LED_ON也行,它大于8就重置1.
作者: 永恒动力    时间: 2021-4-6 08:56
glinfei 发表于 2021-4-4 23:15
LED_ON_Num 是个变量啊,计数用的,就是第几个灯亮,超过总数4就重置为1.跟IO没关。是怕看不懂才设的,否 ...

LED_ON 就是变量,是这个意思吧 ,谢谢你!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1