固件库点亮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 ;
}
}
上一篇:时钟树的讲解
下一篇:stm32的注意事项
推荐阅读最新更新时间:2024-11-04 09:25
设计资源 培训 开发板 精华推荐
- AD7854L 3V 至 5V 单电源、200 ksps、12 位采样 ADC 的典型低功耗电路
- PALO VERDE (MAXREFDES33#):降压转换器
- LT6654AHS6-5 电压基准的典型应用,具有升压输出电流和电流限制
- 用于街道和室内 LED 照明的 150W、103V 交流转直流单输出电源
- 使用 Analog Devices 的 LT124XCN8 的参考设计
- LTC7149EUFD 24V 输入并发 ±12V 电源的典型应用电路
- AD9245BCP-80EBZ,具有 AD9245 3V、14 位、80 MSPS ADC 的评估板
- CN3125
- 作业二原理图PCB2
- IRDC3847-PVCCIO,用于 IR3847 同步降压转换器 600KHZ 的评估套件。先进的集成负载点 DC-DC 稳压器