1,前言
单片机型号:STM32F407
编程环境 :STM32CubeMX + Keil v5
硬件连接 :PF9 ---> LED0 ,PF10--->LED1
注:本工程在1,STM32CubeMX工程基础(配置Debug、时钟树)基础上完成。
2,STM32CubeMX开启GPIO
在中间芯片图形上选择PF9,PF10引脚(1),单击引脚选择GPIO_Output输出模式(2)。
3,STM32CubeMX配置GPIO模式
在System Core中,选择GPIO(1)配置,点击PF9(2)进行配置GPIO模式,在(3)中选择默认电压、上拉输出、输出速度低速、引脚名称。完成后点击GENERATE CODE(4)生成工程文件。
4,GPIO相关函数介绍
用keil5打开工程。一共有一下八个GPIO相关函数,目前只需要了解我下面介绍的最后三个函数。
1,读引脚状态函数HAL_GPIO_ReadPin。输入值GPIOx为端口号,输入值GPIO_Pin为引脚号,输出值GPIO_PinState为引脚电平状态。
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
2,引脚状态翻转函数HAL_GPIO_TogglePin。输入值GPIOx为端口号,输入值GPIO_Pin为引脚号。
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
3,写引脚状态函数HAL_GPIO_WritePin。输入值GPIOx为端口号,输入值GPIO_Pin为引脚号,输入值GPIO_PinState为引脚电平状态。
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
5,keil5编程实战
两个LED灯以0.5s的时间进行闪烁。
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)
{
/* USER CODE END WHILE */
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin,GPIO_PIN_SET);
HAL_Delay(500);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}