ST NUCLEO-C031C6开发板学习笔记04(按键检测)
<div class='showpostmsg'>## ==7:按键处理==### 7.1:硬件设计
首先查看原理图,按键引脚为PC13,默认上拉输入,低电平有效。
!(https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20240304131742391.png)
### 7.2:软件设计
1:CubeMX设置
!(https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20240304143736468.png)
而对于输入引脚的设置,则有三种选择:No pull-up and No pull-down(针脚不上下拉)Pull-up(上拉)Pull-down(下拉)。这里的选择代表了针脚的电平设置。根据原理图,默认我们选择了上拉,也就是说PC13默认是一个高电平,当按键进行按下的时候,就可以检测外界的低电平,代码里面这个这个来实现按键检测判断。
!(https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20240304151639654.png)
2:按键检测函数编写:
进行按键端口引脚初始化
```c
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin : PC13 */
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}
```
```C
/*******************************************************************************
** 函数名称: drv_button_test
** 功能描述: 单元测试函数
** 参数说明: None
** 返回说明: None
** 创建人员: Main
** 创建日期: 2024-03-04
**------------------------------------------------------------------------------
** 修改人员:
** 修改日期:
** 修改描述:
**------------------------------------------------------------------------------
********************************************************************************/
voiddrv_button_test(void)
{
while(1)
{
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==RESET)
{
while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==RESET);
DEBUG_LOG("button");
}
}
}
```
其中:
```c
while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==RESET);
```
上面这个循环用于按键消抖。
### 7.3:按键单元测试
!(https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20240304152243181.png)
按键值等于1,代表单击事件。</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>STM32C0系列将会在低端家电方面大放异彩 </p>
页:
[1]