STM32流水灯的几种实现方法

2019-10-21来源: eefocus关键字:STM32  流水灯  实现方法

#include “stm32f10x.h”

void RCC_Configuration(void);//2

void GPIO_Configuration(void);//GPIO

void Delay(u32 count)

{

u32 i=0;

for(;i

}

int main(void)

{ RCC_Configuration();//3

LED_Init();


while(1)


{

GPIO_SetBits(GPIOA,GPIO_Pin_0);//第一灯亮


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_0); //第一灯灭


Delay(800000); //延时


GPIO_SetBits(GPIOA,GPIO_Pin_1); //第二灯亮


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_1); //第二灯灭


Delay(800000); //延时


GPIO_SetBits(GPIOA,GPIO_Pin_2); //第三灯亮


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_2); //第三灯灭

Delay(800000); //延时


GPIO_SetBits(GPIOA,GPIO_Pin_3); //第四灯亮


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_3); //第四灯灭


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_4);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_4); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_5);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_5); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_6);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_6); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_7);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_7); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_8);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_8); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_9);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_9); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_10);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_10); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_11);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_11); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_12);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_12); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_13);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_13); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_14);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_14); //


Delay(800000); //延时

GPIO_SetBits(GPIOA,GPIO_Pin_15);//


Delay(800000); //延时


GPIO_ResetBits(GPIOA,GPIO_Pin_15); //


  Delay(800000); //延时


}

}

void LED_Init(void)//GPIO

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);


GPIO_InitTypeDef   GPIO_InitStructure;         //结构体

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; 


GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);


}

void RCC_Configuration(void) //1

{

ErrorStatus HSEStartUpStatus;

RCC_DeInit();

RCC_HSEConfig(RCC_HSE_ON);

HSEStartUpStatus = RCC_WaitForHSEStartUp();


if(HSEStartUpStatus == SUCCESS)

{

RCC_HCLKConfig(RCC_SYSCLK_Div1); 

  RCC_PCLK2Config(RCC_HCLK_Div1); 

  RCC_PCLK1Config(RCC_HCLK_Div2);


FLASH_SetLatency(FLASH_Latency_2);

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);


RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);


RCC_PLLCmd(ENABLE);


while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);


RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

while(RCC_GetSYSCLKSource() != 0x08);

}


}


流水灯还有几中实现方法如

用函数GPIO_Write 位置1 再左移 实现流水灯

关键字:STM32  流水灯  实现方法 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic477806.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm32入门——跑马灯(基于stm32f103zet6)
下一篇:STM32学习探究:流水灯的实现

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stm32正点原子学习笔记(29)独立看门狗实验
; IWDG_ReloadCounter(); 9     IWDG_Enable();10     11 }iwdg.h1 #ifndef __IWDG_H2 #define __IWDG_H3 4 #include "stm32f10x.h"5 6 void iwdg_init(uint8_t IWDG_Prescaler,uint16_t Reload);7 8 9 #endifmain.c 1 #include "exti.h" 2 #include "
发表于 2019-11-11
stm32正点原子学习笔记(29)独立看门狗实验
stm32独立看门狗时间设置
//prer:分频数:0~7(只有低 3 位有效!) rlr:自动重装载值,0~0XFFF.//分频因子=4*2^prer.但最大值只能是 256!//rlr:重装载寄存器值:低 11 位有效//时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms).void IWDG_Init(u8 prer,u16 rlr){IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //取消寄存器写保护IWDG_SetPrescaler(prer); //设置 IWDG 分频系数IWDG_SetReload(rlr); //设置 IWDG 装载值IWDG_ReloadCounter
发表于 2019-11-11
STM32的IWDG(独立看门狗)详细用法
章参考资料:《STM32F4XX 中文参考手册》IWDG 章节。1、IWDG简介:  STM32 有两个看门狗,一个是独立看门狗另外一个是窗口看门狗,独立看门狗号称宠物狗,窗口看门狗号称警犬,本章我们主要分析独立看门狗的功能框图和它的应用。独立看门狗用通俗一点的话来解释就是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即 IWDG_RESET。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作。  2 、IWDG功能框图剖析①独立看门狗时钟    独立看门狗的时钟
发表于 2019-11-11
STM32的IWDG(独立看门狗)详细用法
STM32独立看门狗:你看狗都独立了
参考GIT:STM32--软看门口--不需要任何硬件支持--它在IC里面已经集成了。(算是独立看门狗的误解吧)一个倒计数,减减减减减减,减到0就会触发一个系统复位信号也就是单片机重启了。喂狗呢?就是隔一段时间就给这个倒计数重现装载数据,保持它不要到0.头文件:#ifndef _WDG_H_#define _WDG_H_ void watch_dog_init(void);void feed_dog(void); #endif 实现:#include "stm32f10x_iwdg.h"#include "wdg.h"void watch_dog_init
发表于 2019-11-11
stm32f0 hal adc配置
Clock Prescaler:和系统时钟同步并且二分频Sampling Time :采样时间,采样时间是你通过寄存器告诉STM32采样模拟量的时间,设置越长越精确
发表于 2019-11-11
stm32f0 hal adc配置
STM32 MFRC522 IC读卡 程序及原理图
#include "stm32f10x.h" ///////////////////////////////////////////////////////////////////////MF522命令字/////////////////////////////////////////////////////////////////////#define PCD_IDLE              0x00               //取消当前命令#define
发表于 2019-11-11
STM32 MFRC522 IC读卡 程序及原理图
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved