【STM32】新手折腾笔记--02:点亮LED灯
2017-02-25 09:44
423 查看
作为一个STM32F0的核心板,只有一个LED可用,PC13
关于STM32的具体的一些细节(比如:时钟、具体的IO模式等),网路上面的视频教材很多很全很详细,我就不在此赘述了。我直接上我的理解
首先STM32比51复杂很多但是我总结起来,
点亮一个LED的大致步骤就是
1.配置(使能)系统时钟
2.设置IO口
此外希望大家养成良好的编程习惯,把一段功能代码封装好,而不是全部丢在main函数中,这样从main函数文件的宏观上你就知道你在做什么,而不考虑具体如何做的细节
一、文件结构
![](https://img-blog.csdn.net/20170225092118785?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVzdEJU/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在此补充
一下,Bsp文件夹是放入驱动的(比方说我们点亮LED之前的工作就是在驱动LED,这样我们在主函数看到的就是直接使用LED,这样不是更加清晰?)
ps:Bsp也要加入到include path中
![](https://img-blog.csdn.net/20170225092550399?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVzdEJU/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
二、驱动部分
我们在Bsp下建立两个文件
led.h
led.c
三、主函数
这样写出的main函数很干净,我们直接就能看清我们干了什么
![](https://img-blog.csdn.net/20170225094315643?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVzdEJU/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
插上STLink 点LOAD 就可以写入程序了!
关于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学习笔记之点亮LED灯
- STM32学习笔记-点亮第一个led
- stm32学习笔记:新建工程流程,点亮led灯
- 【STM32】新手折腾笔记--01:用MDK5新建一个工程
- [转载]STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- STM32学习笔记1:点亮第一盏LED灯
- 【STM32】新手折腾笔记--00:写在前面
- 【stm32】学习笔记(2)12月28号----------点亮一位LED
- STM32学习笔记1-点亮LED
- STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- ble学习笔记二-----------------点亮led
- Arduino系列教程-02 点亮LED灯
- ARM9/ARM11裸机开发笔记1之MDK开发环境和点亮LED
- STM32:CooCox IDE环境搭建 点亮LED
- Kali Linux 1.0 新手折腾笔记
- FPGA学习笔记——点亮LED
- beaglebone_black_学习笔记——(3)点亮LED之shell命令
- bb_black_学习笔记——(3)点亮LED之shell命令
- 【nRF51822蓝牙开发笔记】点亮LED灯
- ARM底层学习笔记-裸板实验程序解析-点亮LED