stm32 - libopencm3 STM32G0:GPIO输入不起作用
问题描述
我的代码没有将 GPIO 设置为 Nucleo-G071RB 上的输入。MODER 寄存器完全设置 (0xffffffff),GPIO 用作输出。
我做错了什么?
代码:
#include <libopencm3/stm32/gpio.h>
void setupGpio(void);
void setupGpio(void) {
// set input
gpio_mode_setup(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN, GPIO_ALL);
}
int main(void){
setupGpio();
while (1)
{
// Loop with pin read
}
}
解决方案
您需要先启用外设时钟。不仅是 GPIO,几乎所有的外设都需要这个。
修改您的功能如下:
void setupGpio(void) {
rcc_periph_clock_enable(RCC_GPIOB); // Enable GPIOB clock
gpio_mode_setup(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN, GPIO_ALL);
}
推荐阅读
- c# - C#:更新 SQL Server 表中的数据
- linux - Android Studio 的菜单非常滞后,几乎无法使用
- chromium - 谷歌应用商店安卓 10
- javascript - 在 webdriverio 中模拟鼠标移出 - javascript
- java - 如何在右上角的应用栏后退箭头上获得返回按钮(在设备上)之类的功能
- c# - 当“&”符号存在时,.Net Core System.Web.HttpUtility.HtmlDecode 不起作用
- laravel - 显示尼泊尔字符的Dompdf问题
- android - 顶部圆角的透明活动
- c - 如何在 Unix 上包含 «pty.h» 头文件/将 «pty.h» 添加到标准库 C / C++
- openshift - Pod 概览下的资源单元