STM32简单代码疑惑求教

[复制链接]
2611|16
 楼主| magic_yuan 发表于 2013-4-15 11:59 | 显示全部楼层 |阅读模式
各位大侠,
  学习STM32第二个实验一段代码让我感到蛋疼不已。见如下
    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上拉
}

    PA13/PA15为按键输入引脚,在对其输入属性进行设置后,为何还 GPIOA->ODR|=1<<13;           //PA13上拉?难道和51一样输入前先要使输出置高么?
   十分感谢!
NE5532 发表于 2013-4-15 12:01 | 显示全部楼层
不是,STM32的端口是标准IO口,这里的上拉纯为了做键盘用,用于避免使用外部上拉。
 楼主| magic_yuan 发表于 2013-4-15 12:11 | 显示全部楼层
NE5532 发表于 2013-4-15 12:01
不是,STM32的端口是标准IO口,这里的上拉纯为了做键盘用,用于避免使用外部上拉。 ...

多谢大侠!
  那这段程序的意思是----先使该IO口设置成输入模式(貌似设置成上拉下拉输入),然后再使IO口输出高电平。这样倒确实不用外部电平来上拉了。
  只是按照我当前的理解---一个口既然设置成输入方式,那怎么又能对其进行输出呢,STM32的IO口结构没怎么去关注,可能是结构决定吧。
   BTW: STM32的IO口输入方式的“上拉下拉”输入方式是不是类似弱推挽方式?
   十分感谢!
 楼主| magic_yuan 发表于 2013-4-15 12:14 | 显示全部楼层
NE5532 发表于 2013-4-15 12:01
不是,STM32的端口是标准IO口,这里的上拉纯为了做键盘用,用于避免使用外部上拉。 ...

刚看了下,
  估计是这样,设置输入方式为上拉/下拉输入方式,然后设置输出高,这样就选择了上拉输入方式。不知道正确不,看原子的STM32教材这边看得有点云里雾里。
diaodiaodiao 发表于 2013-4-15 12:34 | 显示全部楼层
airwill 发表于 2013-4-15 12:47 | 显示全部楼层
我看,会不会跟 JTAG 口冲突了。真好是 JTAG 口哦
NE5532 发表于 2013-4-15 13:35 | 显示全部楼层
没有你想的那么复杂,要么输出,要么输入,输入可以选择开启内部上拉,Over
 楼主| magic_yuan 发表于 2013-4-15 13:42 | 显示全部楼层
NE5532 发表于 2013-4-15 13:35
没有你想的那么复杂,要么输出,要么输入,输入可以选择开启内部上拉,Over ...

明白!
  多谢!
 楼主| magic_yuan 发表于 2013-4-15 13:43 | 显示全部楼层
airwill 发表于 2013-4-15 12:47
我看,会不会跟 JTAG 口冲突了。真好是 JTAG 口哦

开发板上确实是。不过后面的代码会避开。
  多谢大侠!
NE5532 发表于 2013-4-15 14:15 | 显示全部楼层
magic_yuan 发表于 2013-4-15 13:43
开发板上确实是。不过后面的代码会避开。
  多谢大侠!

功能选择里面一关就是了。
ayb_ice 发表于 2013-4-15 15:13 | 显示全部楼层
这些人都不看手册的,SFR寄存器之所以特殊,是不能按常理理解的
qinweixing 发表于 2013-4-15 22:07 | 显示全部楼层
   楼主,好好的库函数不用,非要自己操作寄存器,错了也不好查啊
 楼主| magic_yuan 发表于 2013-4-15 23:13 | 显示全部楼层
qinweixing 发表于 2013-4-15 22:07
楼主,好好的库函数不用,非要自己操作寄存器,错了也不好查啊

买了些资料学习,上面都是操作寄存器的。
大侠都是用库函数的?听说是好用,不知道外面的工程师都是用库函数还是操作寄存器?
kuangkuang2113 发表于 2013-4-16 08:41 | 显示全部楼层
不懂啊不懂
jy02326166 发表于 2013-4-16 11:50 | 显示全部楼层
magic_yuan 发表于 2013-4-15 23:13
买了些资料学习,上面都是操作寄存器的。
大侠都是用库函数的?听说是好用,不知道外面的工程师都是用库 ...

不一定要直接使用寄存器,但弄懂它是必须的。
zhaofy521 发表于 2013-4-16 12:37 | 显示全部楼层
学习用寄存器还是不错的
xzhihui 发表于 2013-4-17 13:50 | 显示全部楼层
封装好的函数,写代码的时候就是好用。
不过不知道寄存器操作的话,如果库没用好,问题很难查出在哪里。
所以寄存器也要了解清楚。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:发到3000帖时,生活大概完成了一种转折。

359

主题

2770

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部