STM32第一个跑马灯

这是用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个灯的跑马灯了

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用STM32实现4个跑马灯的代码: ```c #include "stm32f10x.h" int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOA和GPIOB时钟 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出速度 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; //设置4个LED引脚 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8; //设置4个LED引脚 GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB while (1) { GPIO_SetBits(GPIOA, GPIO_Pin_0); //点亮第一个LED GPIO_ResetBits(GPIOB, GPIO_Pin_8); //熄灭第四个LED for (int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOA, GPIO_Pin_0); //熄灭第一个LED GPIO_SetBits(GPIOA, GPIO_Pin_1); //点亮第二个LED for (int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOA, GPIO_Pin_1); //熄灭第二个LED GPIO_SetBits(GPIOB, GPIO_Pin_5); //点亮第三个LED for (int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOB, GPIO_Pin_5); //熄灭第三个LED GPIO_SetBits(GPIOB, GPIO_Pin_6); //点亮第四个LED for (int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOB, GPIO_Pin_6); //熄灭第四个LED GPIO_SetBits(GPIOA, GPIO_Pin_0); //点亮第一个LED for (int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOA, GPIO_Pin_0); //熄灭第一个LED GPIO_SetBits(GPIOA, GPIO_Pin_1); //点亮第二个LED GPIO_ResetBits(GPIOB, GPIO_Pin_5); //熄灭第三个LED for (int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOA, GPIO_Pin_1); //熄灭第二个LED GPIO_SetBits(GPIOB, GPIO_Pin_6); //点亮第四个LED for (int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOB, GPIO_Pin_6); //熄灭第四个LED GPIO_SetBits(GPIOB, GPIO_Pin_5); //点亮第三个LED for (int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOB, GPIO_Pin_5); //熄灭第三个LED } } ``` 该代码使用了GPIOA和GPIOB的引脚,其中GPIOA的0、1、2、3引脚和GPIOB的5、6、7、8引脚分别连接了4个LED灯,通过使用延时实现跑马灯效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乌鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值