不使用CubeMX库来控制STM32F3的GPIO
创始人
2024-12-28 13:00:53
0
  1. 引用STM32F3的头文件,如stm32f3xx.h,以便访问寄存器定义。
  2. 为GPIO引脚配置所需的寄存器位,并写入需要的值。 例如,下面的代码将PA10引脚的输出模式设置为推拉,并打开它:
// Enable GPIOA clock                       
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
// Set pin as output 
GPIOA->MODER &= ~(3 << (10 * 2)); // clear bits for the pin
GPIOA->MODER |=  (1 << (10 * 2)); // set pin to output mode
GPIOA->OTYPER &= ~(1 << 10);      // set to push-pull mode
GPIOA->OSPEEDR |= (3 << (10 * 2)); // set to high speed
GPIOA->PUPDR   &= ~(3 << (10 * 2)); // no-pull up, no-pull down
// Set pin high
GPIOA->BSRR |= (1 << 10);          
  1. 可以使用相同的方法配置输入GPIO及触发器,如下所示:
// Enable GPIOC clock                       
RCC->AHBENR |= RCC_AHBENR_GPIOCEN; 
// Set pin as input 
GPIOC->MODER &= ~(3 << (4 * 2)); // clear bits for the pin
GPIOC->PUPDR &= ~(3 << (4 * 2)); // no-pull up, no-pull down
// Configure trigger for Rising edge
EXTI->RTSR |= EXTI_RTSR_TR4;
EXTI->IMR  |= EXTI_IMR_MR4;
NVIC_EnableIRQ(EXTI4_IRQn);

这将启用PC4 GPIO引脚(顺便说一句,注意RCC寄存器控制引脚所在的GPIO时钟),并配置它为一个输入引脚。然后,会配置该引脚上的外部中断,以启动中断服务程序并触发Rising edge事件。

简而言之,您可以通过使用STM32F3系列的寄存器定义,直接控制GPIO并配置它们,而无需使用Cube MX库。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
AWSECS:哪种网络模式具有... 使用AWS ECS中的awsvpc网络模式来获得最佳性能。awsvpc网络模式允许ECS任务直接在V...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...