在输出模式下:ODR是数据输出寄存器,
但是在 输入模式下,同时也用来配置上拉下拉设置。
在Alientek的源码中的按键输入实验中有如下一段初始化代码:
void KEY_Init(void){
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入
GPIOA->CRL|=0X00000008;
GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入
GPIOA->CRH|=0X80800000;
GPIOA->ODR|=1<<13; //PA13上拉,PA0默认下拉
GPIOA->ODR|=1<<15; //PA15上拉
}
经常有用户问道,为什么端口设置为输入,然后还要对输出寄存器进行写操作, GPIOA->ODR|=1<<15; //PA15上拉
在中文数据手册里面的确没有看到说明,下面是英文手册里面的(从网上找的):
即在将端口设置为上拉/下拉输入的状况下,是由将
GPIOx->ODR相应位设置为0或1来设置为下拉输入还是上拉输入
的。
0000(0)模拟输入,通常可用在AD采样
0100(4)浮空输入,如果有外部的上拉或下拉,则可以用这个
1000(8)上/下拉输入,使能内部上/下拉结构,使端口在空闲情况下置为某种电平,具体是某种电平就由GPIOx->ODR来决定。置1则高电平,置0则低电平。
在库函数中,是这么实现的 在
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
// 通过写 ODR设置 上拉下拉输入模式
/* Reset the corresponding ODR bit */
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
{
GPIOx->BRR =(((u32)0x01)<< pinpos); //写 ODR相应位 = 0
}
/*Set the corresponding ODR bit */
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
{
GPIOx->BSRR =(((u32)0x01)<< pinpos);//写 ODR相应位 = 1
}
ODR寄存器
上一篇:STM32 GPIO的8种工作模式及相关配置寄存器
下一篇:STM32 学习三 GPIO操作
推荐阅读
史海拾趣
对于冷热饮水机电路及家用电器电路,网友可能提出多种问题。以下是一些可能的问题及详细回答:
一、冷热饮水机电路相关问题
-
冷热饮水机的工作原理是什么?
回答:冷热饮水机的工作原理主要分为加热和制冷两部分。加热部分通过电加热元件(如电炉丝)对水进行加热,当水温达到设定温度时,温控器自动切断电源,进入保温状态。制冷部分则通常利用半导体制冷技术,通过半导体制冷片对冷水进行降温,同时散热风扇帮助散热,以保持冷水的温度。
-
冷热饮水机为何会出现不加热的故障?
回答:冷热饮水机不加热的故障可能由多种原因引起,包括但不限于:
- 加热元件(如电炉丝)损坏或烧毁。
- 温控器故障,导致无法正确感知水温或无法切断电源。
- 电源线路问题,如插头松动、保险丝熔断等。
- 加热控制电路故障,如继电器、微处理器等元件损坏。
-
冷热饮水机制冷效果不佳怎么办?
回答:如果冷热饮水机制冷效果不佳,可以尝试以下解决方法:
- 检查半导体制冷片和散热风扇是否工作正常,如有损坏需更换。
- 清理饮水机内部的灰尘和杂物,确保空气流通顺畅。
- 检查制冷控制电路是否有问题,如温控器、继电器等元件是否工作正常。
- 如果以上方法均无效,可能是制冷剂泄漏或制冷系统其他部件故障,需请专业人员维修。
-
如何判断冷热饮水机的电路是否损坏?
回答:判断冷热饮水机的电路是否损坏,可以通过以下步骤进行:
- 检查电源插头和插座是否接触良好,电源是否正常。
- 使用万用表等工具检查电路中的保险丝、继电器、微处理器等元件是否损坏。
- 观察饮水机的指示灯和显示屏是否正常显示,以判断控制电路是否工作正常。
- 如果以上检查均正常,但饮水机仍无法正常工作,可能是电路中存在隐性故障或需要更专业的检测手段。
二、家用电器电路相关问题
-
家用电器电路的常见故障有哪些?
回答:家用电器电路的常见故障包括但不限于:
- 电源故障,如插头松动、保险丝熔断等。
- 控制电路故障,如遥控器失灵、控制面板按键无反应等。
- 电机或压缩机故障,如电机不转、压缩机不制冷等。
- 传感器故障,如温度传感器失灵导致温度控制不准确。
- 电路板损坏,如电路板上的元件烧毁或短路。
-
如何预防家用电器电路故障?
回答:预防家用电器电路故障可以从以下几个方面入手:
- 定期清洁家用电器,避免灰尘和杂物积累导致散热不良或短路。
- 使用合格的电源线和插座,避免使用劣质产品导致电路故障。
- 注意家用电器的使用环境,避免潮湿、高温等恶劣环境对电路造成损害。
- 不要超负荷使用家用电器,避免长时间连续工作导致电路过热或损坏。
- 定期检查家用电器的电路和元件是否完好,如有问题及时维修或更换。
-
家用电器电路维修需要注意哪些事项?
回答:家用电器电路维修需要注意以下事项:
- 在维修前务必切断电源,避免触电危险。
- 使用合适的工具和设备进行维修,避免损坏其他部件或造成更大的故障。
- 在维修过程中要仔细检查电路和元件的损坏情况,避免遗漏或误判。
- 对于不熟悉或复杂的电路故障,应请专业人员进行维修。
- 维修完成后要进行测试,确保家用电器能够正常工作并符合安全要求。
埃特斯是一家在ETC技术创新和市场应用方面均表现出色的企业。公司拥有一支高素质的研发团队,不断推出具有创新性的ETC产品和解决方案。同时,埃特斯还注重将创新技术应用于实际场景中,为客户提供高效、便捷的ETC服务。通过技术创新和市场应用的有机结合,埃特斯在ETC行业中树立了良好的口碑和品牌形象。
在电子行业的激烈竞争中,Electro-Term公司凭借其独特的技术创新能力,逐步崭露头角。公司创始人在一次偶然的实验中发现了一项新的半导体材料,这种材料具有更高的导电性和稳定性。凭借这一突破,Electro-Term成功推出了一系列高性能的电子产品,赢得了市场的广泛认可。随着技术的不断升级和产品线的扩展,公司逐渐在电子行业中树立了技术领先的形象。
在竞争激烈的电子行业中,提供优质的服务是赢得客户信任的关键。DEVCON公司深知这一点,因此不断创新服务模式,提升服务质量。公司建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。同时,公司还积极开展培训活动,提升员工的技能水平和服务意识。这些创新举措赢得了客户的广泛赞誉和信赖,为DEVCON公司的稳定发展提供了有力保障。
DEWALT公司成立于1924年,由雷蒙得伟(Raymond Dewalt)创立。他是一位富有远见的发明家和企业家,对电动工具行业有着浓厚的兴趣。雷蒙得伟发明了摇臂锯,这一创新产品成为当时市场上的一颗新星。凭借这一发明,DEWALT公司开始进入电动工具行业,并逐渐在市场中树立了自己的品牌形象。
随着技术的不断进步,伊士曼柯达公司不断推出新的产品和服务,以满足市场的多样化需求。在20世纪初,柯达已成为全球最大的胶卷供应商,并占据了美国摄影市场的绝大部分份额。此外,公司还积极向国际市场扩张,通过设立分支机构和办事处,将产品销往全球各地。这一时期,柯达不仅凭借其优质的产品赢得了广泛的客户基础,还树立了良好的品牌形象。
GSM modem与GSM modem连接,必须用data card为SIM card才能做文字传送吗? 如题。因为我用电话的SIM卡,怎么都不能进入data call的模式来传送文字。很急。。希望得到帮助~… 查看全部问答∨ |
|
LED的效率趋势如何?以各种光源的发光效率来看,白炽灯和卤素灯只有20~30lm/W,省电灯泡大约在70lm/W,HID能够增加到100lm/W,灯管发光效率目前微增至近120lm/W,不过在2010年分别只有约80lm/W和不到30lm/W的LED和OLED,却都呈现快速改善的态势,未来 ...… 查看全部问答∨ |
|
有没有用AVR控制USB芯片PDIUSBD12进行数据传输的啊 有没有用AVR控制USB芯片PDIUSBD12进行数据传输的啊 我最近要做一个AVR16与PC机数据传输的项目,有没有调过USB的 我选择的芯片是PDIUSBD12,如果有调试过的朋友可以联系我么,或者分享给我点经验,谢谢了 (不知道我把帖子发表到这个AVR板块对不 ...… 查看全部问答∨ |
|
• 跨时钟域的设计:FIFO,双RAM,RAM+MUX,等 • 编写FPGA程序实现DSP的外设 • 编写DSP程序,通过EMIF接口访问FPGA内部的存储器… 查看全部问答∨ |