打印

STM32简单代码疑惑求教

[复制链接]
2011|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教材这边看得有点云里雾里。

使用特权

评论回复
5
diaodiaodiao| | 2013-4-15 12:34 | 只看该作者
MARK

使用特权

评论回复
6
airwill| | 2013-4-15 12:47 | 只看该作者
我看,会不会跟 JTAG 口冲突了。真好是 JTAG 口哦

使用特权

评论回复
7
NE5532| | 2013-4-15 13:35 | 只看该作者
没有你想的那么复杂,要么输出,要么输入,输入可以选择开启内部上拉,Over

使用特权

评论回复
8
magic_yuan|  楼主 | 2013-4-15 13:42 | 只看该作者
NE5532 发表于 2013-4-15 13:35
没有你想的那么复杂,要么输出,要么输入,输入可以选择开启内部上拉,Over ...

明白!
  多谢!

使用特权

评论回复
9
magic_yuan|  楼主 | 2013-4-15 13:43 | 只看该作者
airwill 发表于 2013-4-15 12:47
我看,会不会跟 JTAG 口冲突了。真好是 JTAG 口哦

开发板上确实是。不过后面的代码会避开。
  多谢大侠!

使用特权

评论回复
10
NE5532| | 2013-4-15 14:15 | 只看该作者
magic_yuan 发表于 2013-4-15 13:43
开发板上确实是。不过后面的代码会避开。
  多谢大侠!

功能选择里面一关就是了。

使用特权

评论回复
11
ayb_ice| | 2013-4-15 15:13 | 只看该作者
这些人都不看手册的,SFR寄存器之所以特殊,是不能按常理理解的

使用特权

评论回复
12
qinweixing| | 2013-4-15 22:07 | 只看该作者
   楼主,好好的库函数不用,非要自己操作寄存器,错了也不好查啊

使用特权

评论回复
13
magic_yuan|  楼主 | 2013-4-15 23:13 | 只看该作者
qinweixing 发表于 2013-4-15 22:07
楼主,好好的库函数不用,非要自己操作寄存器,错了也不好查啊

买了些资料学习,上面都是操作寄存器的。
大侠都是用库函数的?听说是好用,不知道外面的工程师都是用库函数还是操作寄存器?

使用特权

评论回复
14
kuangkuang2113| | 2013-4-16 08:41 | 只看该作者
不懂啊不懂

使用特权

评论回复
15
jy02326166| | 2013-4-16 11:50 | 只看该作者
magic_yuan 发表于 2013-4-15 23:13
买了些资料学习,上面都是操作寄存器的。
大侠都是用库函数的?听说是好用,不知道外面的工程师都是用库 ...

不一定要直接使用寄存器,但弄懂它是必须的。

使用特权

评论回复
16
zhaofy521| | 2013-4-16 12:37 | 只看该作者
学习用寄存器还是不错的

使用特权

评论回复
17
xzhihui| | 2013-4-17 13:50 | 只看该作者
封装好的函数,写代码的时候就是好用。
不过不知道寄存器操作的话,如果库没用好,问题很难查出在哪里。
所以寄存器也要了解清楚。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

359

主题

2770

帖子

7

粉丝