2. STM32 您所在的位置:网站首页 oppoa93s呼吸灯 2. STM32

2. STM32

2024-03-31 04:13| 来源: 网络整理| 查看: 265

STM32——固件库点灯 1. 新建固件库工程文件1.1 找到一个固件库模板1.2 打开 KEIL5 新建工程1.3 添加相关文件1.4 手动添加其他文件路径进来 2. STM32固件库点灯2.1 在 User 底下创建 led 文件夹,led 文件夹创建 led.c .h 文件2.2 将 led.c 加入 USER 组2.3 添加 led.h 路径2.4 在 led.h 头文件中声明 LED_Init()函数(直接复制void LED_Init(void) + ;号)2.5 点灯开始2.5.1 使能APB2时钟2.5.2 配置结构体 注意:步骤一(使能APB2时钟)图片中函数 RCC_AHBPeriphClockCmd()函数复制错了,正确的应该为:RCC_APB2PeriphClockCmd()2.5.3 初始化GPIOC13 2.6 main 函数调用 初始化 LED_Init () 、 拉低电平 GPIO_ResetBits ()led.h、led.c 和 main.cled.cled.hmain.c 3. LED 闪烁4. 呼吸灯main.c

1. 新建固件库工程文件 1.1 找到一个固件库模板

在这里插入图片描述

1.2 打开 KEIL5 新建工程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最终效果:

在这里插入图片描述

1.3 添加相关文件 STARTUP:添加Libraries——>CMSIS——>startup中的启动文件USER:添加固件库的User文件夹中的.c文件CMSIS:添加Libraries——>CMSIS文件夹中的.c文件DOC:添加固件库中Doc文件夹的readme.txtFWLIB:添加Libraries——>STM32F10x_StdPeriph_Driver文件夹中的.c文件

在这里插入图片描述

最终效果:

在这里插入图片描述

1.4 手动添加其他文件路径进来

打开stm32f0x.h文件

在这里插入图片描述

Ctrl + F 查找 stm32f10x_conf

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. STM32固件库点灯 2.1 在 User 底下创建 led 文件夹,led 文件夹创建 led.c .h 文件

在这里插入图片描述

在这里插入图片描述

2.2 将 led.c 加入 USER 组

在这里插入图片描述

2.3 添加 led.h 路径

在这里插入图片描述

2.4 在 led.h 头文件中声明 LED_Init()函数(直接复制void LED_Init(void) + ;号)

在这里插入图片描述

2.5 点灯开始 2.5.1 使能APB2时钟

在 FWLIB 组中寻找 rcc.c,在 rcc.c 中寻找 rcc.h,找到函数复制粘贴。

在这里插入图片描述

Ctrl + F 查找 RCC_APB2Periph ,复制 RCC_APB2Periph_GPIOC

在这里插入图片描述

右键 Go To

在这里插入图片描述

在这里插入图片描述

2.5.2 配置结构体

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:步骤一(使能APB2时钟)图片中函数 RCC_AHBPeriphClockCmd()函数复制错了,正确的应该为: RCC_APB2PeriphClockCmd()

在这里插入图片描述

2.5.3 初始化GPIOC13

GPIOx:GPIOC ,x = C *GPIO_InitStruct:第二步配置的结构体,要取地址 &

在这里插入图片描述

在这里插入图片描述

2.6 main 函数调用 初始化 LED_Init () 、 拉低电平 GPIO_ResetBits ()

在这里插入图片描述

led.h、led.c 和 main.c led.c #include "led.h" #include "stm32f10x.h" void LED_Init(void) { GPIO_InitTypeDef led_init; //1.打开控制GPIOC的时钟(APB2) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE); //2.配置结构体 led_init.GPIO_Mode = GPIO_Mode_Out_PP; //GPIOC13引脚 led_init.GPIO_Pin = GPIO_Pin_13; //推挽输出 led_init.GPIO_Speed = GPIO_Speed_10MHz; //10MHz //3.对 GPIOC 、 结构体 进行初始化 GPIO_Init(GPIOC, &led_init); } led.h #include "stm32f10x.h" void LED_Init(void); main.c #include "stm32f10x.h" #include "main.h" #include "led.h" int main() { LED_Init(); while(1) { //GPIO_SetBits(GPIOC,GPIO_Pin_13); //P13引脚 输出 高电平 GPIO_ResetBits(GPIOC , GPIO_Pin_13); //P13引脚 输出 低电平 } } 3. LED 闪烁 #include "stm32f10x.h" #include "main.h" #include "led.h" void delay(uint16_t time) { uint16_t i=0; while(time--) { i=10000; while(i--); } } int main() { LED_Init(); GPIO_SetBits(GPIOC , GPIO_Pin_13); while(1) { GPIO_ResetBits(GPIOC , GPIO_Pin_13); delay(1000); GPIO_SetBits(GPIOC , GPIO_Pin_13); delay(1000); } } 4. 呼吸灯 main.c #include "stm32f10x.h" #include "main.h" #include "led.h" void delay(uint16_t time) { uint16_t i=0; while(time--) { i=10; while(i--); } } int main() { unsigned char i=0; unsigned int t=1; unsigned char flag=1; LED_Init(); // GPIO_SetBits(GPIOC , GPIO_Pin_13); while(1) { if(flag==1) { for(i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有