STM32之HAL开发——点灯大师

点灯步骤

注意:本次点灯操作分为俩种,一种为低级点灯------HAL库点灯,一种为高级高效点灯------寄存器点灯。

引脚时钟开启

c 复制代码
 __HAL_RCC_GPIOX_CLK_ENABLE()

引脚初始化

c 复制代码
 /*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDef  GPIO_InitStruct;
    /*选择要控制的GPIO引脚*/															   
GPIO_InitStruct.Pin = GPIO_PIN_5;	

/*设置引脚的输出类型为推挽输出*/
GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;  

/*设置引脚为上拉模式*/
GPIO_InitStruct.Pull  = GPIO_PULLUP;

/*设置引脚速率为高速 */   
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

/*调用库函数,使用上面配置的GPIO_InitStructure初始化GPIO*/
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);	

HAL库点灯操作

c 复制代码
#define LED1_PIN                  GPIO_PIN_5                
#define LED1_GPIO_PORT            GPIOB                     
#define LED1_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOB_CLK_ENABLE()
/* 带参宏,可以像内联函数一样使用 */
#define LED1(a)	HAL_GPIO_WritePin(LED1_GPIO_PORT,LED1_PIN,a)

寄存器点灯操作

c 复制代码
/* 直接操作寄存器的方法控制IO */
#define	digitalHi(p,i)			{p->BSRR=i;}			  //设置为高电平		
#define digitalLo(p,i)			{p->BSRR=(uint32_t)i << 16;}				//输出低电平
#define digitalToggle(p,i)		{p->ODR ^=i;}			//输出反转状态

/* 定义控制IO的宏 */
#define LED1_TOGGLE		digitalToggle(LED1_GPIO_PORT,LED1_PIN)
#define LED1_OFF		digitalHi(LED1_GPIO_PORT,LED1_PIN)
#define LED1_ON			digitalLo(LED1_GPIO_PORT,LED1_PIN)
相关推荐
Suifqwu4 小时前
rk3576(6)之设备树下GPIO驱动
单片机·嵌入式硬件
三佛科技-187366133976 小时前
国产替代新选择|替代STM32/APM32型号推荐(32位MCU)
stm32·单片机·嵌入式硬件
要不枉此行6 小时前
BLE 性能调优全攻略:MTU 配置、DLE 开启与干扰优化
单片机
llilian_167 小时前
信号失真度测试仪 自动失真测试仪 低失真度自动测量仪为各行业精准赋能 自动失真仪
网络·功能测试·单片机·测试工具
jghhh017 小时前
基于TMS320F28033的20MHz手持式双踪袖珍示波器设计与实现
stm32·嵌入式硬件·51单片机
zmj3203247 小时前
KW45芯片的安全启动
单片机·嵌入式开发·安全启动
DA02218 小时前
系统移植-STM32MP1_BusyBox移植
stm32·单片机·系统移植
殷忆枫8 小时前
基于STM32F103C8T6的R60AFD1毫米波雷达模块驱动设计
stm32·单片机·嵌入式硬件
somi79 小时前
ARM-12-I.MX6U LCD
arm开发·单片机·嵌入式硬件·自用
bubiyoushang8889 小时前
基于STM32的心电采集系统设计
stm32·单片机·嵌入式硬件