STM32 GPIO->ODR与IDR是干啥用的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 GPIO->ODR与IDR是干啥用的?相关的知识,希望对你有一定的参考价值。
CC->APB2ENR|=1<<2;
GPIOA->CRL&=0XFFF0FFFF;
GPIOA->CRL|=0x00030000;
GPIOA->ODR|=1>>4; 这样写是不是把STM32 的PA5置高电平? 我把LED 负极接PA5 居然能点亮?
IDR是查看引脚电平状态用的寄存器,ODR是引脚电平输出的寄存器。1>>4:1右移4位为0,
所以,你这句 GPIOA->ODR|=1>>4 是没用的。1<<4:1左移4位为0x10,所以GPIOA->ODR|=1<<4 拉高的是PA4。你说能点亮,是因为它们默认就是高的。
扩展:
1、STM32是基于ARM® Cortex® M 处理器内核的 32位闪存微控制器,为MCU用户开辟了一个全新的自由开发空间,并提供了各种易于上手的软硬件辅助工具。STM32 MCU融高性能、实时性、数字信号处理、低功耗、低电压于一身,同时保持高集成度和开发简易的特点。业内最强大的产品阵容,基于工业标准的处理器,大量的软硬件开发工具,让STM32单片机成为各类中小项目和完整平台解决方案的理想选择。按内核架构分为不同产品系列。
2、CSingleDocTemplate类定义了一个文档模板用于实现单文档界面(SDI)。一个SDI应用程序使用主框架窗口来显示一个文档;一次只能打开一个文档。IDR_MAINFRAME是CSingleDocTemplate的一个重要参数。
参考技术AIDR是查看引脚电平状态用的寄存器。
ODR是引脚电平输出的寄存器。
1>>4:1右移4位为0,
所以,你这句 GPIOA->ODR|=1>>4 是没用的。
1<<4:1左移4位为0x10,
所以GPIOA->ODR|=1<<4 拉高的是PA4。
所以你链接PA5能点亮。
stm32读GPIOx_ODR问题求解
请问
1:既然有GPIOx_IDR,那读GPIOx_ODR有啥作用呢?
2:GPIOx配置成输入,设置GPIOx_ODR有啥作用呢?
3:GPIOx配置成输出,那读GPIOx_IDR有啥作用呢?
2:GPIOx配置成输入,设置GPIOx_ODR有啥作用呢?
3:GPIOx配置成输出,那读GPIOx_IDR有啥作用呢?
2.跟你配置的输入模式有关,如果是analog input或者input floating模式,那么与GPIOx_ODR无关,如果配置成pull-down模式,则应将GPIOx_ODR各位都设置0,如果是pull-up模式,则有设置成1。详见参考手册8.1节的Table 17及8.1.7 Input configuration一节
3.在开漏open-drain模式下,通过读GPIOx_IDR来获取IO状态。详见参考手册8.1.8 output configuration一节
说白了就是输入输出是分开的,需要切换.
以上是关于STM32 GPIO->ODR与IDR是干啥用的?的主要内容,如果未能解决你的问题,请参考以下文章
STM32语句:GPIO->ODR^=0X02 是怎么执行的?实现啥功能?
STM32GPIO配置为输出和输入捕获怎么配置(HAL库)?
stm32寄存器版学习笔记01 GPIO口的配置(LED按键)