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)
相关推荐
这波不该贪内存的17 小时前
裸机开发VS单片机:架构与实战对比
单片机
山羊硬件Time18 小时前
自动化管理Linux的好工具:shell script
linux·嵌入式硬件·硬件工程师·基带工程·硬件开发
神一样的老师18 小时前
【兆易创新GD32VW553开发板试用】红外遥控接入天气时钟实战
驱动开发·单片机·嵌入式硬件
asjodnobfy18 小时前
Π型滤波电路
嵌入式硬件·硬件工程
多看多敲多思考20 小时前
华润微CS32ME10 MCU使用教程(2)---CS32ME10之UART串口模块使用
stm32·单片机·嵌入式硬件·mcu
神一样的老师20 小时前
【兆易创新GD32VW553开发板试用】天气时钟设计与调试实战
单片机·嵌入式硬件·物联网
国科安芯21 小时前
核电站仪控与监测系统中抗辐射 MCU 芯片应用研究
单片机·嵌入式硬件·macos·无人机·cocos2d·核电站
黑白园21 小时前
STM32系统时钟由72M修改为36M验证示例
stm32·单片机·嵌入式硬件
LCG元1 天前
基于ARM7的LCD设计与实现:S3C4510B通用IO口控制液晶模块
stm32·单片机·嵌入式硬件
山后太阳1 天前
Keil5(MDK-ARM)完整下载安装教程+入门教程:从零搭建STM32开发环境
arm开发·stm32·嵌入式硬件