【STM32WBA52CG】+3 STM32WBA 外设应用一 按键和点灯
【STM32WBA52CG】+2 STM32WBA Web Bluetooth试玩 之后继续
感觉外设的使用还是蛮有必要的,于是先玩玩这个吧。
新建一个项目
选择配置为缺省 生成代码如下
IO口是这样的:
加入控制led的代码
while (1)
{
HAL_GPIO_WritePin(GPIOB, LD2_Pin|LD3_Pin|LD1_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD2_Pin|LD3_Pin|LD1_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD1_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD1_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
结果:
按键如下:
下面测试按键和led
修改主程序代码如下:
void key_check(void){
uint8_t keyval1 = HAL_GPIO_ReadPin( B1_GPIO_Port, B1_Pin);
if(keyval1 == 1)
HAL_GPIO_WritePin(GPIOB, LD1_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(GPIOB, LD1_Pin, GPIO_PIN_RESET);
uint8_t keyval2 = HAL_GPIO_ReadPin( B2_GPIO_Port, B2_Pin);
if(keyval2 == 1)
HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET);
uint8_t keyval3 = HAL_GPIO_ReadPin( B3_GPIO_Port, B3_Pin);
if(keyval3 == 1)
HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_RESET);
}
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(1) //测试按键和led
{
key_check();
HAL_Delay(100);
}
if(0)//测试led
{
HAL_GPIO_WritePin(GPIOB, LD2_Pin|LD3_Pin|LD1_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD2_Pin|LD3_Pin|LD1_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD1_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD1_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
测试结果:
谢谢大家
本帖最后由 damiaa 于 2023-8-6 20:46 编辑