使用STM32固件库编程驱动led灯

第一步:打开keil5,创建工程文件


第二步:选择自己想要的路径(温馨提示,最好不要创建在C盘里面)然后点击保存

第三步:因为我们是使用STM32单片机所以选择Software Packs

因为我们使用的是stm32F1系列的芯片所以要选择如下

STM32F1系列有多种芯片,所以我们可以根据自己手上的单片机型号来选择(例如我手上的是F103RCT6芯片就选下面的)

这下我们就创建好了我们的工程文件


创建如下五个相关模块组

修改组名时,我们需要点击组一次然后再间隔一秒再次点击,就可以修改组名了

Start:添加Libraries——>CMSIS——>startup中的启动文件

Cmsis: 添加Libraries——>CMSIS文件夹中的如下文件

Fwlib:添加Libraries——>Fwlib——>src文件夹中所有的.c文件

最后再User中加入以下.h文件

新建main.c文件


双击如图的魔术棒

3.Define添加会调用到的代码 我们得宏定义加载一下

代码如下

STM32F10X_HD, USE_STDPERIPH_DRIVER

添加其他文件的.h路径

接下来编译代码

没有报错,说明我们的启动文件算是完美收官

接下来开始点灯:

在野火mini板中有两路led,且都是低电平点亮,高电平熄灭,所以我们要使能我们的引脚

第一步:新建功能模块组,把创建的led的.c和.h文件加入到里面

LED.c文件

#include "stm32f10x.h"                  // Device header
#include "led.h"void LED_Init(void)
{//打开控制GPIOC的时钟(APB2)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//配置结构体GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//引脚配置PC2GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50hz//成员初始化GPIO_Init(GPIOC, &GPIO_InitStructure);
}

LED.h文件

#ifndef _LED_H_
#define _LED_H_#include "stm32f10x.h"                  // Device headervoid LED_Init(void);#endif

方式一:
下面函数都能实现led灯的点亮和熄灭

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//输出高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//输出低电平

main.c文件

#include "stm32f10x.h"                  // Device header
#include "led.h"int main(void)
{LED_Init(); //LED初始化while(1){GPIO_ResetBits(GPIOC, GPIO_Pin_2);     //PC2引脚输出低电平    }}

方式二:

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//前两个为指定需要的端口
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//

代码实现

#include "stm32f10x.h"                  // Device header
#include "led.h"int main(void)
{LED_Init(); //LED初始化while(1){GPIO_WriteBit(GPIOC, GPIO_Pin_3,Bit_RESET);     //PC3引脚输出低电平-亮灯//GPIO_WriteBit(GPIOC, GPIO_Pin_3,Bit_SET);     //PC3引脚输出高电平-熄灯}
}

编译文件:
无报错

下载到单片机
复位开关点亮成功

led小灯闪烁

首先我们需要加入delay延时函数
delay.c

#include "stm32f10x.h"/*** @brief  微秒级延时* @param  xus 延时时长,范围:0~233015* @retval 无*/
void Delay_us(uint32_t xus)
{SysTick->LOAD = 72 * xus;                //设置定时器重装值SysTick->VAL = 0x00;                    //清空当前计数值SysTick->CTRL = 0x00000005;                //设置时钟源为HCLK,启动定时器while(!(SysTick->CTRL & 0x00010000));    //等待计数到0SysTick->CTRL = 0x00000004;                //关闭定时器
}/*** @brief  毫秒级延时* @param  xms 延时时长,范围:0~4294967295* @retval 无*/
void Delay_ms(uint32_t xms)
{while(xms--){Delay_us(1000);}
}/*** @brief  秒级延时* @param  xs 延时时长,范围:0~4294967295* @retval 无*/
void Delay_s(uint32_t xs)
{while(xs--){Delay_ms(1000);}
}

delay.h文件:

#ifndef __DELAY_H
#define __DELAY_Hvoid Delay_us(uint32_t us);
void Delay_ms(uint32_t ms);
void Delay_s(uint32_t s);#endifmain.c
#include "stm32f10x.h"                  // Device header
#include "led.h"
#include "delay.h"
int main(void)
{LED_Init(); //LED初始化while(1){GPIO_WriteBit(GPIOC, GPIO_Pin_3,Bit_RESET);     //PC3引脚输出高电平Delay_ms(1000);GPIO_WriteBit(GPIOC, GPIO_Pin_3,Bit_SET);     //PC3引脚输出低电平Delay_ms(1000);}}

编译下载复位单片机led进行1s为周期的闪烁-------实验成功!!!

STM32固件库编程-----点亮led小灯相关推荐

  1. STM32LL库系列教程【二】——点亮LED小灯

    开发板:秉火-霸道V1 芯片:STM32F103ZET6 GPIO: PB0 STM32LL库系列教程--LL库工程配置流程 STM32LL库系列教程[一]--安装CubeMx软件 STM32LL库系 ...

  2. 【自学51单片机】2 -- LED小灯及点亮原理介绍、keil软件编写程序、烧录程序和点亮 LED 小灯

    目录 1. 外设 LED 介绍 2.计算限流电阻 3.USB接口电路介绍 4.点亮LED小灯原理 5.特殊功能寄存器和位定义 6.通过keil软件建立工程 7.编写程序 8.烧录程序 9.收获 1. ...

  3. arduino点亮led小灯

    arduino点亮led灯 这是一个简单的arduino程序,用于点亮LED小灯 线路图 小灯长脚接2号引脚,短脚接GND 代码 void setup() { pinMode(2, OUTPUT); ...

  4. Arduino-点亮LED小灯

    点亮一个小灯闪烁 int LEDPin = 13; void setup() {// put your setup code here, to run once:pinMode(LEDPin,OUTP ...

  5. 驱动编程,点亮LED小灯

    实现要求:1.2.3分别控制LED灯1.2.3的点亮:4.5.6则分别控制其熄灭. 知识点:字符设备驱动. 字符设备驱动实现的框架: 注册设备驱动 --> 获得设备号,将其挂在到根目录的dev目 ...

  6. 单片机led灯闪烁实验总结_单片机很好玩3,花三分钟,使用普通LED小灯,制作手机“呼吸灯”...

    上一节为了解决单片机 IO 电流驱动能力不足,导致 LED 小灯亮度不高的问题,借助了三极管.单片机的 IO 通过三极管开关 LED 小灯的电流,最后的确明显让小灯的亮度更高了. 使用电路模拟软件 还 ...

  7. 51单片机实验——LED小灯的操作(一)

    目录 引言 led模块原理图解析 led小灯的操作 1.点亮led小灯 位操作法 总线操作法 2.闪烁led小灯 位操作法 总线操作法 3.led流水灯 位操作法 总线操作法 总线操作-数组循环遍历法 ...

  8. 【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC

    STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC 一 .I2C物理层 二.协议层 1.I2C基本读写过程 (1)主机写数据到从机 (2)主机由从机中读数据 (3)I2C 通讯复合 ...

  9. STM32固件库(标准外设库)入门学习 第四章OLED屏幕使用

    STM32固件库(标准外设库)入门学习 第四章OLED屏幕使用 本学习教程,参考B站江科大自化协STM32视频,型号为STM32F103C8T6. 文章目录 STM32固件库(标准外设库)入门学习 第 ...

最新文章

  1. 基于车体约束的INS辅助定位
  2. 从pandas resample说起,然后再超越resample,通过pd.Grouper、groupby、agg
  3. 发布json数据_技术分享 | MySQL 8.0.17 GA 发布!
  4. 数据可视化|实验一 绘图基础语法和常用参数
  5. 学号20145209《信息安全系统设计基础》第11周学习总结
  6. 图嵌入知识表征の初体验
  7. QT5开发及实例学习之八基本对话框(一)
  8. 想要把日志在两个blog同步太过麻烦了
  9. Python调用微博API
  10. 计算机控制技术实验平台,信号与系统•控制理论及计算机控制技术实验平台
  11. bootstrap的提示框bootbox.js
  12. 数电和模电的区别和联系
  13. html表单中文字前黑点怎么弄,如何将word文档中标题前的黑点去掉
  14. 最简洁用EXCEL公式实现身份证验证
  15. N32926 24小时连续测试720p, h.264 IPCAM功能,为什么基本不发热呢?
  16. mysql对表中添加属性_MySQL数据库增删改字段(属性)
  17. 央视就《新闻联播》“火炬手空手捐款”致歉
  18. 天天向商升级为稿定设计之后,初衷会变吗?未来的发展将会如何?
  19. 椭圆曲线图像加密 matlab,椭圆曲线ECC加密算法入门介绍(三、四)
  20. Unity MVC框架之见解

热门文章

  1. 百度多酷CEO孙祖德:拥抱移动游戏大时代
  2. 【IOS游戏开发】知识普及之UDID
  3. Mixin 函数的详细解析
  4. DDR布线要求及拓扑结构分析
  5. html桌面天干地支,天干地支
  6. Navicat12安装教程
  7. Fomo3D教程:如何参与Fomo3D和赚钱
  8. zcmu 1143: 又是比智力
  9. Redis实现微信“附近的人”功能?,这篇文章作用太大了
  10. 【PCLint】 Keil环境下使用方式