STM32+HAL库驱动GPIO点亮LED
【GPIO理论部分可参考:【小趴菜STM32开发笔记1】---- GPIO】
目录
1 新建cubemx工程
2 配置系统时钟
3 配置LED引脚
通过查阅开发板原理图,可知PA5引脚控制LED,cubemx将PA5配置为GPIO_Output模式
4 生成代码
5 进入Keil,补充代码
5.1 点亮LED
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //拉高PA5管脚,灯亮
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
实验效果:
5.2 闪烁灯
第一种方法---HAL_GPIO_WritePin
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //拉高PA5管脚,灯亮
HAL_Delay(500); //延时500ms
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET); //拉低PA5管脚,灯灭
HAL_Delay(500); //延时500ms
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
第二种方法--- HAL_GPIO_TogglePin
只需在while里修改即可,实现的效果与第一种方法一致
while (1)
{
// HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //拉高PA5管脚,灯亮
// HAL_Delay(500); //延时500ms
// HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET); //拉低PA5管脚,灯灭
// HAL_Delay(500); //延时500ms
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); //翻转PA5引脚的电平
HAL_Delay(500); //延时500ms
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
实验效果:
STM32G0闪烁灯
【keil小技巧】----自动复位
进入keil魔术棒界面
进入debug里的setting
勾选 flash download 里的 reset and run 即可在下载程序后软件自动复位,无需手动复位