新建CubeMX工程
这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。
- 打开SWD调试接口
- 在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)
- 配置引脚属性
GPIO output level:默认输出电平。Hight和Low
GPIO mode :设置引脚输出模式。有推挽和开漏
GPIO Pull-up/Pull-down:设置上下拉。
Maximum output speed:设置引脚速度。有四个等级。
User Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。
- 生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。
- 在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3*/ //在BEGIN与END之间添加代码。重新生成工程就不会删掉
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6); //翻转IO引脚
HAL_Delay(2000); //延时2秒
}
/* USER CODE END 3 */
- 编译后,下载烧录到板子中。
有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。
GPIO HAL库函数
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); //设置引脚函数
- GPIO_TypeDef *GPIOx:GPIOA,B,C...
- uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15
- GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET); //LED灯会亮两秒钟
HAL_Delay(2000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET); //LED灯会灭一秒钟
}
/* USER CODE END 3 */
}
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); //读取引脚电平
- GPIO_TypeDef *GPIOx:GPIOA,B,C...
- uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15
- GPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平
还有其他函数,大家在实际中运用吧。
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); //翻转IO引脚电平
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); //锁定IO引脚电平