当前位置:
首页 >
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跑马灯实验的全部内容,希望文章能够帮你解决所遇到的问题。