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)
相关推荐
开-悟36 分钟前
嵌入式编程-使用AI查找BUG的启发
c语言·人工智能·嵌入式硬件·bug
Wangshanjie_982 小时前
【STM32】-串口通讯
stm32
许白掰3 小时前
【stm32】HAL库开发——CubeMX配置RTC,单片机工作模式和看门狗
stm32·单片机·嵌入式硬件·学习·实时音视频
DIY机器人工房4 小时前
0.96寸OLED显示屏 江协科技学习笔记(36个知识点)
笔记·科技·stm32·单片机·嵌入式硬件·学习·江协科技
国科安芯4 小时前
【AS32系列MCU调试教程】SPI调试的常见问题解析
单片机·嵌入式硬件·性能优化·硬件架构·硬件工程
LS_learner5 小时前
同步(Synchronization)和互斥(Mutual Exclusion)关系
嵌入式硬件
Natsume17106 小时前
嵌入式开发:GPIO、UART、SPI、I2C 驱动开发详解与实战案例
c语言·驱动开发·stm32·嵌入式硬件·mcu·架构·github
MeshddY7 小时前
(超详细)数据库项目初体验:使用C语言连接数据库完成短地址服务(本地运行版)
c语言·数据库·单片机
m0_555762907 小时前
STM32常见外设
stm32·单片机·嵌入式硬件
森焱森7 小时前
无人机三轴稳定化控制(1)____飞机的稳定控制逻辑
c语言·单片机·算法·无人机