/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_Delay(300); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); HAL_Delay(300); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
while (1) { if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==GPIO_PIN_RESET) { HAL_Delay(10); if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==GPIO_PIN_RESET) { HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin); while(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==GPIO_PIN_RESET); } } /* USER CODE END WHILE */ }
5.编译后下载成功
下载后要先按一下Reset才能成功执行
第三节课
第三节课课后练习:外部中断控制灯
1.配置好基础配置,和第一节课4步一样
2.配置按键的GPIO模式
3.在主函数中让程序执行LED0的亮灭
让LED0闪烁,LED1灭
1 2 3 4 5 6 7 8 9 10 11
while (1) { /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ HAL_Delay(300); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); HAL_Delay(300); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET); }
4. 在stm32f1xx_hal_gpio.c中找到中断回调函数
如果按下按键,则LED1亮,表示进入外部中断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
__weak voidHAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { /* Prevent unused argument(s) compilation warning */ UNUSED(GPIO_Pin); /* NOTE: This function Should not be modified, when the callback is needed, the HAL_GPIO_EXTI_Callback could be implemented in the user file */ if(GPIO_Pin==GPIO_PIN_1) { if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1)==0) { HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET); } __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_1); } }
/* Prevent unused argument(s) compilation warning */ UNUSED(GPIO_Pin); /* NOTE: This function Should not be modified, when the callback is needed, the HAL_GPIO_EXTI_Callback could be implemented in the user file */
/* USER CODE BEGIN 1 */ int i=500; /* USER CODE END 1 */ /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); // 使能PWM输出 /* USER CODE END 2 */