OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7744|回复: 17

关于端口使能的一些疑问

[复制链接]

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-11-13
在线时间
10 小时
发表于 2015-6-29 09:43:44 | 显示全部楼层 |阅读模式
5金钱

GPIO 有很多端口,使能是什么意思?说是这个端口为高电平才能工作。

这个字面的意思能够理解。

但是知识不系统,有没有阅读资料?因为看specification也是只能看得懂字面意思

站在巨人的肩膀上,奋力向前!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2015-6-29 10:04:11 | 显示全部楼层
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-11-13
在线时间
10 小时
 楼主| 发表于 2015-6-29 10:18:24 | 显示全部楼层
回复【2楼】ST-FAE-SALE:
---------------------------------
其实我现在用的不是STM32,时间比较短,原子大哥的板子放在宿舍都没时间学习了,刚刚上班好多东西不懂,只能来求助了
站在巨人的肩膀上,奋力向前!
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2015-6-29 12:11:23 | 显示全部楼层
使能我感觉就是通上电,
外设不通电时候省电。
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-6-26
在线时间
0 小时
发表于 2015-6-29 13:38:20 | 显示全部楼层
初涉STM32之浅谈时钟使能问题
作为一个STM32的菜鸟级人物,我刚开始接触STM32时,其实和当年开始学习51单片机的心理是一样的。茫然,谁说不是呢?但是,正常的学习途径无非就是看书,然后敲代码,最后烧程序,有问题就check,然后再继续烧,我都怀疑我快成了火头工。因为在我的印象中,只有这类职业才和“烧”有着密不可分的联系。即使当一名敬业又牛逼的火头工是我毕生的梦想。OK,不侃了。我希望,通过写日志把我作为一个菜鸟在学习STM32中的问题记录下来,同时以我为鉴,规避那些没有必要的破事。
Q1:学习STM32要不要基础?
原则上它应该是需要的,但是,我们也能发现很多人也是没有基础的。比如说,我们实验室的大师兄原来是管理专业,但是现在相当牛逼,软硬皆通。如果你和很多致力于在技术领域中作出一番成就的人一样,你必须记住:你再也不能任性地说要给自己一大块时间系统地学习知识,不现实。更多的时候,情况是:敲代码时需要什么你就去找相应的“部分知识”,然后搞明白,解决当前的问题。就是这样。
Q2:学习STM32要什么基础?
理论上,需要数字电路,模拟电路,C语言编程基础,单片机会一点就更好了,这样的话会能适应STM32的编程开发思路。不过帮助不大,这也是我要写“浅谈时钟问题”的原因。而我的情况是,全都学过,但你看清楚,只是学过而已。关于数字电路和模拟电路这种课程,我也是记不得什么了。好在我们实验室,技术方面的书从来不缺。
Q3:学习STM32对性别有要求吗?
一般,女生都会问这个问题。我  也问过,所以你就知道我为什么能成为“妇女之友”了。玩笑玩笑啦。其实没有,女生在这方面有先天性的优势,心思细腻,稍一转化,这就是态度认真的同义词。而且,世界上第一个程序员是女性。行啦,女同学别得瑟了!!!

好啦,开始入正题了。
STM32的新手,一般都会对一个问题很纠结。我也是,就是所谓的”时钟问题“。我们在尽心STM32编程时,会痛苦地发现这样一个事实:不管你要干嘛,你首先要做的一件事就是使能时钟。而且可能每一次的时钟还是不同的。你就会问:为什么要使能时钟?为什么每次使能的时钟还不一样呢?为什么51单片机中没有这些鬼?
在学51单片机的时候,基本上接触不到I/O方向和外设时钟的概念,I/O想输入就直接读,想输出就直接赋值,串口、AD转化、外部中断等等也都是想用就用,不需要单独配置时钟。这样在初学时的确方便了很多,不需要有乱七八糟的设置就能让芯片跑起来,但是随之带来的就是所谓的功耗问题。但是作为初学者,谁他妈还管这个啊?能让程序跑起来就已经让我们兴奋得几个晚上睡不着觉了。说这话不太合适,但事实上很多芯片生产厂商也不考虑这个问题。
可是随着电子产品集成度越来越高,功耗和发热越来越严重,芯片厂商非常无奈也在开始想办法避免这个问题,而最直接的思路当然就是用多少功能就使能多少功能,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。如果不用的就完全关闭,尽可能降低芯片功耗,所以就出现了这么多的时钟和IO配置。说白了,时钟的功能就好像是一个小开关,你要用什么寄存器就先对应的打开开关,即:使能对应的时钟。
实际上,在这里面还涉及到一个时钟门控技术,而这又涉及到同步电路,我们都知道(默认你们都知道)在同步电路中总是有一个时钟控制。这里我就不赘述了,如果你和我一样是一个强迫症患者,请你回去翻翻一本叫《数字电子技术基础》的书,你一定可以找到答案的,相信我吧。
到这里你就差不多能够理解为什么STM32编程需要不断地使能时钟了,因为默认情况下这些时钟都是disable的。你要使用它,当然需要enable了。如果再不明白,我就想骂了:寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值,这样寄存器才能工作。只不过,在51单片机一个时钟系统把一切都包了,在STM32中,我们很明确地做好了分工,让大家各司其职,其实这样还有一个好处就是,不是每个外设都需要系统时钟那么高的频率,就好像是:哪个公司会让CEO去做底层代码工作一样。

这是我从一个菜鸟的角度谈得一点看法,不够专业,但至少会让刚开始学习时的那份纠结锐减不少。
唐少
2015年6月29日星期一
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-11-13
在线时间
10 小时
 楼主| 发表于 2015-6-29 14:52:00 | 显示全部楼层
回复【5楼】唐少学STM32:
---------------------------------
Thanks very much, this is a quiet valuable answer for me!
太感谢了 这么通俗易懂的语言。我是一脸微笑读完的!
站在巨人的肩膀上,奋力向前!
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-11-13
在线时间
10 小时
 楼主| 发表于 2015-6-29 15:01:04 | 显示全部楼层
回复【5楼】唐少学STM32:
---------------------------------
增添几个问题for you(并非没动脑,知识百思不得其解这些鬼是什么意思):
Q1:使能端口就是使能时钟么?也就是是否是每个端口都对应一个时钟?
Q2:你是否有对照代码看datasheet的经验?能否分享一下经验呢?
Q3:是否有时间 有时间的话就回答一下吧!!!!!!!
站在巨人的肩膀上,奋力向前!
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-6-26
在线时间
0 小时
发表于 2015-6-29 15:22:55 | 显示全部楼层
回复【7楼】Aidon_Zhang:
---------------------------------
A1:专业上来讲并非是使能端口,而是使能时钟。正如我在上面说到的,为了解决功耗问题,加入时钟门控技术后,能够做到的是一个功能有一个时钟控制,你需要使用哪个功能,okay,你就打开对应的时钟,也就是使能时钟。不妨理解:“使能”=“打开”。但是,你问:是否是每个端口对应一个时钟?答案是不是。在STM32的时钟系统中,只有5个时钟源,分别是SYSCLK(系统时钟)=72MHz,AHB总线时钟(使用SYSCLK)=72MHz,APB1总线时钟(PCLK1)=36MHz,APB2总线时钟(PCLK2)=72MHz,PLL时钟=72MHz.目前我们发现GPIO端口基本都是挂载在APB2总线下,所以通常情况下我们GPIO的时钟使能的是APB2总线时钟。这个你要看清楚,很多端口对应的是一个时钟。我这样解释,你能接受吗?

A2:我也是学习STM32的新手,就是我上面写的那样,敲代码,然后烧程序。我只有不懂,遇到问题时会去看一下DataSheet.所以谈不上什么经验了。

A3:如上。
回复

使用道具 举报

0

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2013-8-25
在线时间
12 小时
发表于 2015-6-29 15:57:36 | 显示全部楼层
楼上回答的很好啊
————————
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-11-13
在线时间
10 小时
 楼主| 发表于 2015-6-29 15:59:21 | 显示全部楼层
回复【8楼】唐少学STM32:
---------------------------------
理解了时钟和端口的映射关系,是一对多的(尤其是指APB2总线时钟);
感谢分享万岁
站在巨人的肩膀上,奋力向前!
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-11-13
在线时间
10 小时
 楼主| 发表于 2015-6-29 15:59:47 | 显示全部楼层
回复【9楼】电子发射:
---------------------------------
Agree with you!
站在巨人的肩膀上,奋力向前!
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-6-26
在线时间
0 小时
发表于 2015-6-29 16:18:10 | 显示全部楼层
回复【10楼】Aidon_Zhang:
-----------------------------个人理解而已,如果说的有问题,欢迎批评。
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-6-26
在线时间
0 小时
发表于 2015-6-29 16:18:49 | 显示全部楼层
回复【9楼】电子发射:
---------------------------------我也是刚开始学,希望大家一起进步吧。
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-11-13
在线时间
10 小时
 楼主| 发表于 2015-6-29 16:37:51 | 显示全部楼层
回复【12楼】唐少学STM32:
---------------------------------
Q1:不知唐少是否对时钟分频有所了解? 如下代码中描述中的4分频,然后时钟频率为时钟源频率的1/4,不知是否可以理解为时钟取样频率为1/4?


//nand控制器时钟源选择为CK24M,硬件上固定有4分频;即nand控制器时钟频率为时钟源频率的1/4
    NANDCLKCTL = 0x08;         // 24M/4 = 6M

    SFR_BANK = 0x0f;       //init DMA1
    DMAPriority = 0x00;
    DMA1IE =0;
    DMA1IP = 0x03;

    SFR_BANK = 0x06;
    ADPUPD1 |= 0x80;
    ADDRV0 = 0x13;
    ADDRV1 = 0x14;
PADPUPD0 |= 0x04;
//DBGCIE = 0x24;
站在巨人的肩膀上,奋力向前!
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-6-26
在线时间
0 小时
发表于 2015-6-29 18:09:35 | 显示全部楼层
是这样。但是我对什么要分频感到很疑惑
回复

使用道具 举报

43

主题

278

帖子

1

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2013-12-27
在线时间
0 小时
发表于 2015-6-29 19:00:53 | 显示全部楼层
使能,就是上电。
水的比较多。
回复

使用道具 举报

17

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2016-5-3
在线时间
14 小时
发表于 2016-5-12 11:08:53 | 显示全部楼层
Aidon_Zhang 发表于 2015-6-29 15:59
回复【8楼】唐少学STM32:
---------------------------------
理解了时钟和端口的映射关系,是一对多的(尤 ...

具体的映射关系是什呢?比如我如果用key1我怎么知道是要用GPIOF呢?
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-2-18
在线时间
6 小时
发表于 2020-3-13 20:11:17 | 显示全部楼层
唐少学STM32 发表于 2015-6-29 13:38
初涉STM32之浅谈时钟使能问题
        作为一个STM32的菜鸟级人物,我刚开始接触STM32时,其实和当年开始学习51单 ...

感谢楼主,我理解了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-22 10:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表