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的一个重要参数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-08

IDR是查看引脚电平状态用的寄存器。

ODR是引脚电平输出的寄存器。

1>>4:1右移4位为0,
所以,你这句 GPIOA->ODR|=1>>4 是没用的。

1<<4:1左移4位为0x10,
所以GPIOA->ODR|=1<<4 拉高的是PA4。

所以你链接PA5能点亮。


相似回答