实验目的
通过滴答定时器来实现单向流水灯效果
硬件设计
PC8~PC15 对应G4板上LED灯的LD1~LD8
PD2 连接锁存器
说明:根据原理图可知,LED灯在低电平时亮,高电平时灭
锁存器的使能端与PD2相连,低电平时锁存数据(锁存器输出不随输入变化),高电平时不锁存数据(锁存器输出随输入变化)
unsigned char
1、unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型。
2、在32位系统中一个char类型一般为8个bit,所以能存储的数据范围为-128~127,而unsigned char则是0~255,字符型所存储的数据是用来表示字符的,例如ASCⅡ或Unicode。
unsigned char总结
unsigned char能表示的范围为0~255,因此unsigned char ms_led =1000超出范围,会有警告。
处理方法
定义为unsigned int ms_led =1000
遗留问题
1、如何使流水灯的方向从LD8到LD1??
2、ms_led=0;//为什么去掉这一句也有流水灯的效果,但是流水灯时间变慢?
实验总结
通过SYSTICK中断服务函数来实现流水灯效果,1ms进入一次中断服务函数。
实现流水灯的关键代码:GPIOC->ODR=~(0x0001 << ++i)。
变量 i 辅助移位,变量ms_led辅助延时。
PD2用于锁存数据。