
一、STM32的输入输出管脚有下面8种(4输入2输出2
复用输出)可能的配置:①浮空输入_IN_FLOATING②带上拉输入_IPU③带下拉输入_IPD④模拟输入_AIN⑤开漏输出_OUT_OD⑥推挽输出_OUT_PP⑦复用
功能的推挽输出_AF_PP⑧复用功能的开漏输出_AF_OD1.1I/O口的输出模式下,有3种输出
速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。输出速度又称输出驱动电路的响应速度,可理解为:输出驱动电路的带宽,即一个驱动电路可以不失真地通过信号的最大频率。如果一个信号的频率超过了驱动电路的响应速度,就有可能信号失真。如果信号频率为10MHz,而你配置了2MHz的带宽,则10MHz的方波很可能就变成了正弦波。就好比是公路的设计时速,汽车速度低于设计时速时,可以平稳地运行,如果超过设计时速就会颠簸,甚至翻车。关键是:GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。带宽速度高的驱动器耗电配孙大、噪声也大,带宽低的驱动器耗电小、噪声也小。使用合适的驱动器可以降低功耗和噪声。GPIO的引脚速度跟应用匹配(推荐10倍以上)。比如:1.1.1对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。1.1.2对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。1.1.3对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。1.2GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。1.3在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。1.4所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。1.5GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。二、GPIO的翻转速度指:输入/输出寄存器的0,1值反映到外部引脚(APB2上)高低电平的速度.手册上指出GPIO最大翻转速度可达18MHz。通过简单的程序测试,用示波器观察到的翻转时间是综合的时间,包括取指令的时间、指令执衡谈行的时间、指令执行后信号传递到寄存器的时间(这其中可能经过很多环节,比如AHB、APB、总线仲裁等),最后才是信号从寄存器传输到引脚所经历的时间。如有上拉电阻,其阻值越大,RC延时越大,即逻辑电平转换的速度越慢,功耗越大。三、在STM32中如何配置片内外设使用的IO端口首先,一个外设经过①配置输入的时钟和②初始化后即被激活(开启);③如果使用该外设的输入输出管脚,则需要配置相应的GPIO端口(否则该外设对应的输入输出管脚可以做普通GPIO管脚使用);④再对外设进行详细配置。对应到外设的输入输出功能有下述三种情况:①外设对应的管脚为输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能的开漏输出。②外设对应的管脚为输入:则根据外围电路的配置可以选择浮空输入、带上拉输入或带下拉输入。③ADC对应的管脚:配置管脚为模拟输入。如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将管脚配置成复用输出功能后,如果外设没有被激咐卖碰活,那么它的输出将不确定。四、通用IO端口(GPIO)初始化4.1GPIO初始化41.1RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|B|C,ENABLE):使能APB2总线外设时钟;41.2RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA|B|C,DISABLE):释放GPIO复位。4.2置各个PIN端口(模拟输入_AIN、输入浮空_IN_FLOATING、输入上拉_IPU、输入下拉_IPD、开漏输出_OUT_OD、推挽式输出_OUT_PP、推挽式复用输出_AF_PP、开漏复用输出_AF_OD)。4.3GPIO初始化完成。五、的GPIO *** 作函数uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)//读GPIO某一位的输入uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx)//读GPIO的输入uint8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)//读GPIO某一位的输出uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx)//读GPIO的输出voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)//将GPIO的某个位置位voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)//将GPIO的某个位复位voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal)//写GPIO的某个位voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal)//写GPIO六、管脚的复用功能重映射1、复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚)STM32所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。2、重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变到其他的引脚上!直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。如:USART1:0:没有重映像(TX/PA9,RX/PA10);1:重映像(TX/PB6,RX/PB7)。(参考AFIO_MAPR寄存器介绍)[0,1为一寄存器的bit值]【注】下述复用功能的引出脚具有重映射功能:-晶体振荡器的引脚在不接晶体时,可以作为普通I/O口-CAN模块;-JTAG调试接口;-大部分定时器的引出接口;-大部分USART引出接口-I2C1的引出接口;-SPI1的引出接口;举例:对于STM32F103VBT6,47引脚为PB10,它的复用功能是I2C2_SCL和USART3_TX,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能;另外在TIM2的引脚重映射后,TIM2_CH3也成为这个引脚的复用功能。(1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。(2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚。【提要】
这里将以我的经验介绍我的嵌入式学习资料,对我已阅的目前主要的嵌入式参考
书进行简单的和个人的评论,作为我自己的一个学习小结,也给大家一个参考。
【内弊纤容】
回想两个月来,
决定了研究生专业方向从嵌入式系统入手后,
热情持高,
我一口气读完了五
六本厚厚的嵌入式书籍,
都是自己买的,
因为图书馆的藏书实在太有限了,
而嵌入式技术的
参考资料在书城却每个星期都有大量的更新。
现在,我对嵌入式系统和
linux
都算有了个清晰的认识,其实,兜转下来,各套资料取长补
短,我觉得我的基础理论还是打得非常扎实的。当然非常希望能尽早自己配置一套开发板,
进行实际的 *** 作。
开发板也作过一番细致考察的了,
现在只等钱到位,
在这之前我觉得还是
需要很系统地读透两本理论书的。
有朋友看我老在
“潜入式”
,
笑话说:
“不用看啦,
没什么的,
直接去实验室做就可以了„„”
,
呵呵,实话说,无论是驱动还是上层软件的开发,都已经存在很多非常成熟的模块和代码,
包括各种不同应用领域的嵌入式系统。
我们在应用中,
实际要作的动作还是非常简单的,
一
般的读现成程序,修改,试验就
OK
了,并不涉及很深入的原理。而我们过早卷入太肤浅的
应用,
也会打消这份学习的热情,甚至可能在不停的项目忙碌中得意起来,
轻视基础。
对于
初学者来说,我觉得这是非常不好的影响。
越是对系统原理和体系深入了解,
我越对嵌入式敬畏,
这是门很新的综合性的应用学科,
也
是门非常深奥的学问,
绝不是简单编译个系统,
移植到某个目标板就是已经学明了、
精通了。
尚未全面在开发板上展开实验前,
我对自己打下的基础还是比较满意的。
还有个目标,
明年
五月顺便去考考嵌入式系统设计师——今年十一月国家才第一次设立的嵌入式技术认证考
试。
我手头上已经看了的,包括两本还在看的书有:
《嵌入式系统——体系结构、编程与设计》
(印度)
Raj Kamal
编著,陈曙辉
等译,清华大
学出版社
这是本国外教材,
是我九月份的时候最早自己买来看的。
还保持很高的热情看完了三分之二。
后来发现其中的思路和内容都很不如意,
就搁下来了。
毕竟是国外的书籍,
外国人似乎喜欢
一种慢悠悠的,
很发散的学习和思考,
我以前读过的几本书都是这样。
实际上还是中国人自
己编的书精简些,逻辑也比较强,所以我的经验:
建议大家不要看国外教材,即使看也应该
在有了比较全面的了解后才拿来作为参考。像
Thinking in C++
这样的书,其实也是不适合作
为入门读物的。
《嵌入式系统设计与应用宏没开发》郑灵翔
等编著,北京航空航天大学出版社
这本书是厦门大学嵌入式系统课程教学讲稿整理编写成的。基于
intel Xscale PXA255
的开发
板,
2.6
内核的嵌入式
linux
,
讲解的内容还是非常全面蔽卜纳到位的。
包括
arm
与
xscale
体系结构,
*** 作系统基础,
linux
*** 作,
liunx
内核驱动原理及程序开发,以及常见的硬件接口设计及其
驱动程序的设计等。
这是第一本让我真正了解什么是嵌入式的书,
我看得津津有味,
大概一
个星期就看完了,
后来还花了一个星期时间进行总结和笔记,
以及上机实验。
要说这本书的
不足就是它囊括太广内容了,从处理器到 *** 作系统原理,到
linux
*** 作,几乎什么都涉及,
自然都不深入,
所以,作为入门学习还是可以的,
但若要足够了解以实际应用,还是感觉缺
了条腿。
应该对当中的各个方面都逐步展开更深入的学习,
特别是
arm
和
thumb
指令体系,
linux
编程方面。
《嵌入式系统开发与应用教程》田泽
编著,北京航空航天大学出版社
这是我还在看郑灵翔那本书的时候,
发现同学图书馆借到的而且我发现正是我非常需要补充
知识的书。这本书编写非常条理,而且很集中,不会面面具到,侧重在
arm
体系以及指令
系统方面,作了很深入全面的介绍。这正是在了解嵌入式系统总体概念后应该深入的方面。
于是我借同学的书过来,头热着花四天左右读完了,而且还作了很详细的笔记和疑问记录。
后来去书店,忍不住又自己买了本回来,包括下面这本实验教材。
《嵌入式系统开发与应用实验教程(第
2
版)
》田泽
编著,北京航空航天大学出版社
这本书跟上面介绍的那本是配套的,主要讲解怎样配置开发环境和怎样着手进行程序的编
译。这也正是我非常急切想学的东西。因为已经掌握了系统基本知识,而且还掌握了
arm
体系
CUP
具体指令和编程规范,伪指令、宏指令等知识后,正是非常想实际动手去做做东
西的。
这本实验教材系统介绍了开发嵌入式程序所需要的工具、环境,
和配置方法,还附带
了很系统的实验例程。它是基于一块
s3c44b0
处理器的,我暂时还没板,但还是很老实基本
读完了此书。
《
Red Hat Linux9
编程开发与网络管理》冉林仓
编著,电子工业出版社
因为我主要想做的是基于
arm7
和
arm9
的嵌入式
linux
系统开发,所以对
linux
还是需要一
本专门的书读读。这本书还很不错!图书馆很多关于
linux
使用、配置的书,很多挺肤浅的,
而这本书侧重于命令行 *** 作,以及网络系统的开发编程,很符合嵌入式
linux
开发的需要。
我选读了其中命令 *** 作的部分,
剩下网络管理、
编程的留待接触到自己的开发板后再认真去
看。
《嵌入式系统设计师教程》清华大学出版社
全国计算机技术与软件专业技术资格(水平)
考试指定用书
应该说在两个月不到的时间内看这么多书,
虽然各本各有侧重,
我总算是很全面很具体打了
个基础了。
但所学的东西有嫌零碎。
在得知国家刚设立了嵌入式系统设计师考试后,
我立即
买了这本书,
并着手认认真真看了,
不为了考试,
而是为了好好组织下这段时间学到的知识,
查漏补缺,
并在这个教程的指导下很系统地学习下相关的理论。
我发现有了之前的知识准备
和实践经验,再来看这个考试教程,感觉很轻松,而且很条理,很实在!全没有考试教条的
感觉,
书中每一个章节都是我非常需要系统了解的东西,
非常实用。
这本书也在很高的热情
之下基本读完了,现在还剩下五分之一。
图书馆借的书:
《构建嵌入式
linux
系统》
Karim
Yagbmour
著
O'Reilly
Taiwan
公司译
韩存兵
龚波
改编
中
国电力出版社
据说很好的一本书,我也从图书馆借了,但还没看„„
总得来说,
我读书的选择还是挺合理的,
我觉得无论有没开发板的条件,
都应该好好地这样
打个坚实的基础。其实我们实验室有四块
s3c2410
的板,都有项目在,但我始终坚持不过早
卷入有点相关却不大实质的项目,
像我这样比较迟入门的初学者,
全面和扎实的理论知识显
得非常重要,否则一接触事情,这个不知道,那个也不清楚,就很被动。还有我觉得初学嵌
入式应该很好意识到网络的作用,好好利用网上的资源,包括相关的人的文章、经验谈等。
多写写笔记,多跟人交流
评论列表(0条)