这是用STM32跑起来的第一个跑马灯程序。先安装好MDK5和相应驱动。然后设置Keil的调整设置。
按下图设置
设置好之后可以测试正点原子的默认跑马灯程序,先编译通过再下载
默认程序只调动两个等闪烁,改程序为调动8个灯闪烁
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
/*下面主函数是使用HAL库函数实现控制IO口输出*/
int main(void)
{
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
delay_init(72); //初始化延时函数
LED_Init(); //初始化LED
//LED数组
uint16_t arrLed[8];
arrLed[0]=GPIO_PIN_0;
arrLed[1]=GPIO_PIN_1;
arrLed[2]=GPIO_PIN_2;
arrLed[3]=GPIO_PIN_3;
arrLed[4]=GPIO_PIN_4;
arrLed[5]=GPIO_PIN_5;
arrLed[6]=GPIO_PIN_6;
arrLed[7]=GPIO_PIN_7;
int curIndex=0;
while (1)
{
//改版为点亮所以led做跑马灯
for(int i=0;i<8;i++)
{
//当前该亮的灯点亮
if(i==curIndex)
{
HAL_GPIO_WritePin(GPIOC, arrLed[i], GPIO_PIN_RESET);
}
//其他熄灭
else
{
HAL_GPIO_WritePin(GPIOC, arrLed[i], GPIO_PIN_SET);
}
}
curIndex++;
curIndex=curIndex%8;
delay_ms(500);
//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); //LED0亮
//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_SET); //LED1灭
//delay_ms(500); //延时500ms
//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); //LED0灭
//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET); //LED1亮
//delay_ms(500); //延时500ms
}
}
然后编译下载就跑起来8个灯的跑马灯了