stm32打怪升级之偶遇流水灯

首先,先回顾一下,控制一个led闪烁的步骤是什么

就上节而言,先要对控制led的端口进行初始化,初始化的内容包括时钟SystemInit()和gpio_init(),gpio_init()包括很多,所以我们声明一个结构体,然后用GPIO_InitStructure.GPIO_Pin选择控制的端口,在上节我们选择控制所有的led灯,即控制所有的引脚,通过查阅电路图可以知道是哪些引脚,再通过查阅库函数中文手册知道GPIO_Pin_ALL即是控制所有引脚,而选择控制引脚则用  |   来表示(|一定得切换成英文),随后我们设置传输速率,输出方式,并初始化gpio,做完这一切,成功了一半。下一步即是对led进行控制,我们明白,GPIO_SetBits,GPIO_ResetBits 这两个函数是控制高低电平的我们只需要再声明一个显示函数led_display,包含这GPIO_SetBits,GPIO_ResetBits,并且加上延迟函数,最后再在主函数main.c写入函数则会实现闪烁灯的效果。所有函数的用法参考stm32固件库中文手册

如果要控制流水灯,那么很简单,我只需要改变控制引脚函数GPIO_InitStructure.GPIO_Pin以及在显示函数led_display中多添加几行相应引脚输出高低电平命令GPIO_SetBits,GPIO_ResetBits即可。最重要的一点,我们在led.c中写的任何函数体(除开库函数)都要先在led.h中先进行声明。是不是很简单。

改的几点东西东西如图

1.引脚设置

2.流水灯

3.led.h下的声明和定义

4.主函数

int main()
{
LED_Init();
while(1)
{
led_display(); 
}
}

但是有一点我存在疑惑,当我使用0.1来控制灯的亮灭时,灯不闪烁或者很暗,亮度弱,但是在仿真的时候,灯是按照程序来进行亮灭变化的

只贴上led.c程序,在led.h上已写了相关定义

 

posted @ 2017-07-28 14:33  子不语怪力乱神  阅读(271)  评论(0编辑  收藏  举报