您的位置:首页 > 其它

【STM32】新手折腾笔记--02:点亮LED灯

2017-02-25 09:44 423 查看
作为一个STM32F0的核心板,只有一个LED可用,PC13

关于STM32的具体的一些细节(比如:时钟、具体的IO模式等),网路上面的视频教材很多很全很详细,我就不在此赘述了。我直接上我的理解

首先STM32比51复杂很多但是我总结起来,

点亮一个LED的大致步骤就是

1.配置(使能)系统时钟

2.设置IO口

此外希望大家养成良好的编程习惯,把一段功能代码封装好,而不是全部丢在main函数中,这样从main函数文件的宏观上你就知道你在做什么,而不考虑具体如何做的细节

一、文件结构



在此补充

一下,Bsp文件夹是放入驱动的(比方说我们点亮LED之前的工作就是在驱动LED,这样我们在主函数看到的就是直接使用LED,这样不是更加清晰?)

ps:Bsp也要加入到include path中



二、驱动部分

我们在Bsp下建立两个文件

led.h

#ifndef __LED_H  // 条件编译,防止重复引用
#define __LED_H
#include "stm32f0xx.h"
void led_init(void);   //声明函数
void  led_on(void);
void  led_off(void);
#endif


led.c

#include "stm32f0xx.h"
#include "led.h"
GPIO_InitTypeDef        GPIO_InitStructure;                         //定义结构体,这个结构体包括了全部GPIO的参数

void led_init(){
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);   //使能GPIOC时钟,C脚上面有时钟
//使用刚才的结构体来配置参数
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 ;                     //第13引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;                 //输出模式(stm32输出和输入是分别两个格式)
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                //推挽输出模式,具体百度
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //输出速率50Mhz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;          //无上拉(浮空)
GPIO_Init(GPIOC, &GPIO_InitStructure);                                //把上面的参数应用到GPIOC
/*
实际上一开始定义的结构体就像是一个配件单,写明了要求,最后一步我们把这个配件单送个相应的商家,让商家下单十分清晰
*/
}

void  led_on(){
GPIO_ResetBits(GPIOC,GPIO_Pin_13);     //对一个脚置0函数
}

void  led_off(){
GPIO_SetBits(GPIOC,GPIO_Pin_13);             //对一个脚置1函数
}


三、主函数

#include "main.h"
#include "led.h"
int main(void)
{

led_init();    //初始化led  就是之前一堆配置 ,采用结构体那个
while (1)
{
led_on();           //点亮led
}
}


这样写出的main函数很干净,我们直接就能看清我们干了什么



插上STLink 点LOAD 就可以写入程序了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32