(四)STM32学习笔记——如何读取IO输入

1.设置 Pinout View & Configuration

  • 设置PA11 引脚为 【GPIO_Input】

  • 设置PA11内部电压为上拉,这样当A11接地时,可以检测到A11的引脚输入为0,表示按键按下。

2.编写代码

这里通过 定时器TIM1 来体现GPIO的读取功能。

先重写HAL_TIM_PeriodElapsedCallback 函数。

timeCnt记录中断次数每1ms,time1PrintCnt记录1000次中断代表1s,time1Print代表是否打印。

int timeCnt=0;
int time1PrintCnt=0;
uint8_t time1Print = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim) {
    if (htim->Instance == TIM1) {
        timeCnt++;
        if (timeCnt >= 1000) {
            timeCnt = 0;
            time1PrintCnt++;
            time1Print=1;
        }
    }
}

在while 循环中使用

HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11) 读取 A11 引脚电平,当为低电平时,清空time1PrintCnt的计数。

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  if (0 == HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11)){
		  time1PrintCnt=0;
	  }
	  if (time1Print){
		  HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);

		  time1Print=0;
		  printf("time1PrintCnt = %d\n", time1PrintCnt);
	  }
  }
  /* USER CODE END 3 */

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhyriver

制作不易,打赏给我提供动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值