3.野火GPIO输出作业

用库函数使三个灯成为流水灯

新建Hardware文件夹,后续需要用到的外设.h .c文件都放里面,这里创建led.c和led.h

野火哥在单个点灯中说,将各个部分宏定义,能够方便移植和后续修改,但多个灯时他的定义方式我觉得会打乱我的思绪,于是删除了端口以及引脚的宏定义

led.h文件
#ifndef __LED_H
#define __LED_H

#include "stm32f10x.h"  
#define LED_GPIO_CLK         RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA



void LED_GPIO_Config(void);
#endif

led.c文件
#include "led.h"
void LED_GPIO_Config(void)
{
    RCC_APB2PeriphClockCmd(LED_GPIO_CLK,ENABLE);
    GPIO_InitTypeDef GPIO_Initstructure;
    GPIO_Initstructure.GPIO_Pin   = GPIO_Pin_0|GPIO_Pin_4|GPIO_Pin_5;
    GPIO_Initstructure.GPIO_Mode  = GPIO_Mode_Out_PP;
    GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(GPIOA,&GPIO_Initstructure);
    GPIO_Init(GPIOB,&GPIO_Initstructure);
    
}

:和江科大的视频不同,GPIO配置是直接在led.c文件中写的,能够使main.c更简洁

main.c
#include "stm32f10x.h"                  // Device header
#include "led.h"
void Delay(uint32_t count)
{
    for(;count!=0;count--);
    
}

int main(void)
{
    LED_GPIO_Config();
    while(1)
    {
    GPIO_ResetBits(GPIOB, GPIO_Pin_0);
    Delay(0xFFFFF);
    GPIO_SetBits(GPIOB, GPIO_Pin_0);
    GPIO_ResetBits(GPIOB, GPIO_Pin_5);
    Delay(0xFFFFF);
    GPIO_SetBits(GPIOB, GPIO_Pin_5);
    GPIO_ResetBits(GPIOA, GPIO_Pin_4);
    Delay(0xFFFFF);
    GPIO_SetBits(GPIOA, GPIO_Pin_4);

    }
    
}
现象

并未完美实现流水灯,一开始是全亮状态,应该是刚配置文件后,默认全为0,然后才开始循环实现逐个熄灭,然后才能实现流水,但延时只要足够时间短,就无法观测到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值