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)
相关推荐
宵时待雨19 小时前
STM32笔记归纳8:时钟
笔记·stm32·单片机·嵌入式硬件
JJRainbow20 小时前
SN75176 芯片设计RS-232 转 RS-485 通信模块设计原理图
stm32·单片机·嵌入式硬件·fpga开发·硬件工程
不做无法实现的梦~20 小时前
PX4编译环境配置和qgc配置安装教程(2)
linux·stm32
花月mmc20 小时前
CanMV K230 波形识别——整体部署(4)
人工智能·python·嵌入式硬件·深度学习·信号处理
宁静致远202120 小时前
STM32模拟IIC读取PCF8563
stm32·单片机·嵌入式硬件
三佛科技-1341638421220 小时前
宠物洗澡打泡机方案,宠物泡泡机MCU方案开发设计分享
单片机·嵌入式硬件·物联网·智能家居·pcb工艺·宠物
芯岭技术21 小时前
低成本315/433M接收芯片 XL420 SOP8封装,支持 1527 等常见 OOK编码
单片机·嵌入式硬件
Wangshanjie_9821 小时前
【通讯协议】-01、Modbus协议
单片机·信息与通信
听风吹雨yu21 小时前
STM32F407-MD5码计算/Digest认证计算
stm32·单片机·嵌入式硬件
yugi98783821 小时前
RN8302B电表芯片驱动开发指南(基于SPI通信)
驱动开发·单片机·嵌入式硬件