stm32跑马灯实验
生活随笔
收集整理的這篇文章主要介紹了
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跑马灯实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32按键实验
- 下一篇: 如何避免家中的厨房水龙头堵塞?