11-固件库点亮LED

发布者:书卷气息最新更新时间:2022-01-20 来源: eefocus关键字:固件库  点亮LED  STM32 手机看文章 扫描二维码
随时随地手机看文章

固件库点亮LED

前提条件 建立一个固件库工程模板可以参考以下博客
https://blog.csdn.net/cainaiolin/article/details/52012786

硬件基础
在这里插入图片描述
我的开发板上面一共有三个led灯 我选择点亮PB5这个灯


话不多说看代码:新建一个文件名字为“bsp_led.h”

BoardSupport Packet 的缩写(板级支持包) 多用在用户自己定义的文件中


#ifndef __BSP_LED_H

#define __BSP_LED_H


//R红色的灯

/*-----LED 灯的 GPIO 端口、GPIO 引脚号以及 GPIO 端口时钟----*/

#define LED1_GPIO_PORT GPIOB

#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB

#define LED1_GPIO_PIN GPIO_Pin_5


/*直接操作寄存器的方法控制IO*/

#define digitalHi(p,i) {p->BSRR = i;} //输出高电平

#define digitalLo(p,i) {p->BRR = i;} //输出为低电平

#define digitalToggle(p,i) {p->ODR ^= i;} //输出为反正状态 异或


/*定义控制IO的宏*/

#define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_GPIO_PIN)

#define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN)

#define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_GPIO_PIN)



/*LED_GPIO初始化函数*/

void LED_GPIO_Config(void)

{

/*定义一个GPIO_InitTypeDef类型的结构体*/

GPIO_InitTypeDef GPIO_InitStructure;

/*开启LED的相关GPIO外设时钟*/

RCC_APB2PeriphClockCmd(LED1_GPIO_CLK,ENABLE);

/*选择需要控制的GPIO引脚*/

GPIO_InitStructure.GPIO_Pin  = LED1_GPIO_PIN;

/*设置引脚的模式为通用推挽输出模式*/

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

/*设置输出的速率为50MHz*/

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

/*选择需要控制的引脚*/

GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;

/*调用GPIO_Init函数初始化GPIO端口*/

GPIO_Init(LED1_GPIO_PORT,&GPIO_InitStructure);

/*关闭所有灯*/

GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);

}


#endif


LED_GPIO_Config 初始化函数步骤解读

1.定义一个GPIO_InitTypeDef类型的变量,这个结构体中包含三个变量uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode分别设置管脚,输出速率,模式选择。

2.开启相关的GPIO口的时钟

3.对GPIO_InitTypeDef类型的的变量进行赋值

4.调用GPIO_Init函数对GPIO端口进行初始化

5.LED默认是关闭的


主函数:main

#include"stm32f10x.h"

#include"bsp_led.h"

/*

*@brief Main program

*@param None

*@retval  Nane

*/


int main(void)

{

LED_GPIO_Config();

while(1)

{

LED1_ON ;

}

}


关键字:固件库  点亮LED  STM32 引用地址:11-固件库点亮LED

上一篇:时钟树的讲解
下一篇:stm32的注意事项

推荐阅读最新更新时间:2024-11-04 09:25

stm32最高工作频率是多少
STM32是一款基于ARM Cortex-M内核的高性能微控制器,由STMicroelectronics公司生产。它具有丰富的外设和功能,广泛应用于各种嵌入式系统开发。本文将介绍STM32的最高工作频率。 首先,我们需要了解STM32的基本架构。STM32采用了一种高度模块化的设计,主要包括三个部分:处理器核心、存储器和外设。处理器核心是STM32的核心部件,负责执行程序指令;存储器用于存储程序代码和数据;外设则是STM32的各种功能模块,如GPIO、UART、SPI、I2C等。 STM32的处理器核心采用了ARM Cortex-M系列内核,如Cortex-M3、Cortex-M4等。这些内核具有高性能、低功耗的特点,能够满足
[单片机]
STM32解决:st-link连接下载程序的问题
STM32解决:Error: Flash Download failed - Cortex-M3 本人由于使用普中科技的stm32 的开发板的 USB的下载的地方坏了,所以不得不使用arm仿真器 st-link 进行下载。 鼓捣了半天下面总结一下几个问题: 1、st-link的驱动下载 首先你插上st-link的时候,电脑的设备管理器 这个地方是有感叹号的,说明还没有装好驱动,所以我就在网上找啊找。 终于根据:win8【笔者没这个系统,无法测试,请大家测试后报告】:http://pan.baidu.com/s/1sjJQxZn (转载来自:https://blog.csdn.net/imxiangzi/
[单片机]
<font color='red'>STM32</font>解决:st-link连接下载程序的问题
基于STM32的红光治疗仪控制系统
一 STM32 ADC 采样 频率的确定 先看一些资料,确定一下STM32 ADC 的时钟: (1),由时钟控制器提供的ADCCLK 时钟和PCLK2(APB2 时钟)同步。CLK 控制器为ADC 时钟提供一个专用的可编程预分频器。 (2)一般情况下在程序 中将 PCLK2 时钟设为 与系统时钟 相同 RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); (3)在时钟配置寄存器(RCC_CFGR) 中 有 为ADC 时钟提供一个专用的可编程预分器 位15:14 ADCPRE:A
[单片机]
STM32 定时器中断函数
#include timer.h #include led.h //晶振是8MHZ,默认CPU是9倍频, //通用定时器 3 中断初始化 //这里时钟选择为 APB1 的 2 倍,而 APB1 为 36M // SYSCLK:72M // AHB:72M // APB1(PCLK1):36M // APB2(PCLK2):72M // PLL:72M //arr:自动重装值。 //psc:时钟预分频数 //这里使用的是定时器 3 //定时器溢出时间计算方式Tout=((arr+1)*(psc+1))/Ftus. voidTIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitT
[单片机]
基于STM32步进电机多细分控制的设计
本文主要介绍了一种基于STM32的混合式步进电机控制方案,STM32产生PWM(脉宽调制信号),利用PWM完成DAC转换,通过PWMDAC的输出电压实现对步进电机的多细分控制。该设计相比利用DAC数模转换芯片的设计方案具有电路简单,费效比高的优点,而且可实现步进电机十六分之一步的驱动控制,精度较高。 1、硬件设计 硬件设计框图如图1所示,主要由PC上位机给STM32F103发送控制命令,通过STM32F103控制A3988,从而驱动两个步进电机转动。其中,STM32F103是意法半导体公司生产的基于ARMCortex—M3内核的微控制器,内核架构先进,性能优越,主频可达72MHz,执行效率高,具有较高的运算能力及数据处理功能,
[单片机]
基于<font color='red'>STM32</font>步进电机多细分控制的设计
基于语音识别汽车空调控制系统设计
  现在汽车上使用的电器越来越多,驾驶员需要手动操作的电器开关也越来越多,不但增加了驾驶员的负担,还影响了行车安全。本文以STM32F103VET6(以下简称STM32)芯片为控制核心,采用高性能LD3320语音识别芯片,设计基于语音识别的汽车空调控制系统。该系统可以用语音有效控制汽车空调,减轻了驾驶员的操作负担,保证行车过程中的安全。   1 系统硬件设计   运用语音识别技术,结合各种传感器对车身内外的环境(如气温、阳光强度等)以及制冷压缩机的状态等多种参数进行实时检测,与设定参数相比较,微控制器经过运算处理做出判断,输出相应的调节和控制信号。执行机构经过实时调整和修正,实现对车厢内空气环境全方位、多功能的调节和控制。系统
[单片机]
基于语音识别汽车空调控制系统设计
STM32 I2C写入驱动数码管显示实验
实验环境 Matlab版本: 2021b 操作系统 :Win10专业版 硬件平台 :YF-STM32-ALPHA 1R4 实验内容 :I2C驱动数码管芯片显示‘0’~‘A’字符 模型与原理图 本次实验所用到的simulink模型如图5.2所示,电路原理图如图5.3所示,实验效果为数码管从‘0’~‘A’轮流显示,如图5.1所示。 图5.1 数码管驱动显示实验效果 图5.2 数码管显示I2C驱动模型 图5.3 CH422G共阴数码管电路连接 基础模型介绍与分析 1、数码管简介 数码管简单来说就是将多个LED有规律的排列在一起,实验中用到的数码管外观如图5.4所示,其型号为:FJ3461AH,三维尺寸:30.00mmx1
[单片机]
<font color='red'>STM32</font> I2C写入驱动数码管显示实验
STM32简单的LED流水灯程序
//0x4002 1000 - 0x4002 13FF 复位和时钟控制(RCC) #define RCC_BASE 0x40021000 #define RCC_APB2ENR (RCC_BASE+0x18) //LED接在GPIOF上,是APB2上的外设,是RCC_APB2ENR寄存器的第7位 //APB20x4001 1c00 GPIO端口F #define GPIOF_BASE 0x40011c00 #define GPIOF_CHL (0x000+GPIOF_BASE) #define GPIOF_CHR (0x004+GPIOF_BASE) #defin
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved