欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

stm32跑马灯实验

发布时间:2025/4/5 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 stm32跑马灯实验 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

本文记录STM32mini开发板实验
普通跑马灯

回归GPIO基础知识

每组IO口含有下面7个寄存器,7个寄存器一共可以控制一组GPIO的16个IO口。

GPIOx_CRL:端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ODR:端口输出寄存器 GPIOx_BSRR:端口位设置/清除寄存器 GPIOx_BRR:端口位清除寄存器 GPIOx_LCKR:端口配置锁存寄存器

下面实现:使用STM32F10xmini开发板

复位以后跑马灯展示(全亮,全灭,闪两下,从左至右单亮,从右至左单亮,全灭) ;

核心代码

头文件led.h

#ifndef __LED_H #define __LED_Hvoid LED_Init(void);#endif

实现文件led.c

#include "led.h"#include "stm32f10x.h"//包含固件库头文件void LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIOB的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//GPIOE的时钟GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置推挽输出GPIO_InitStructure.GPIO_Pin= GPIO_Pin_8;//GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//输出速度GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_8);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置推挽输出GPIO_InitStructure.GPIO_Pin= GPIO_Pin_2;//GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//输出速度GPIO_Init(GPIOD,&GPIO_InitStructure);GPIO_SetBits(GPIOD,GPIO_Pin_2);}

主函数main.c

#include "stm32f10x.h" #include "led.h" #include "delay.h"int main(void){LED_Init();delay_init();while(1){//全亮GPIO_ResetBits(GPIOA,GPIO_Pin_8);//LED0低电平,点亮GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1低电平,点亮delay_ms(10000);//全灭GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0高电平GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1高电平delay_ms(10000);//亮一下GPIO_ResetBits(GPIOA,GPIO_Pin_8);//LED0低电平,点亮GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1低电平,点亮delay_ms(300);//同时熄灭GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0高电平GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1高电平delay_ms(300);//亮一下GPIO_ResetBits(GPIOA,GPIO_Pin_8);//LED0低电平,点亮GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1低电平,点亮delay_ms(300);//同时熄灭GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0高电平GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1高电平delay_ms(300);//从左往右单亮GPIO_ResetBits(GPIOA,GPIO_Pin_8); //LED0输出低GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1输出高delay_ms(1000);GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0输出高GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1输出低delay_ms(1000);GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1高电平delay_ms(300);//从右往左单亮GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0输出高GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1输出低delay_ms(1000);GPIO_ResetBits(GPIOA,GPIO_Pin_8); //LED0输出低GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1输出高delay_ms(1000);//全灭GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0高电平GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1高电平delay_ms(10000);} }

上述代码实现:复位以后跑马灯展示(全亮,全灭,闪两下,从左至右单亮,从右至左单亮,全灭) ;使用的是STM32mini板。

总结

以上是生活随笔为你收集整理的stm32跑马灯实验的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。