本帖最后由 damiaa 于 2023-8-6 20:46 编辑
【STM32WBA52CG】+3 STM32WBA 外设应用一 按键和点灯
【NUCLEO-WBA52CG】+1开箱贴
【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 */
-
- }
测试结果:
谢谢大家