![点击分享此内容可以赚币 分享](/master/images/share_but.png)
第7章CMSIS架构与STM32库开发方式6Hppt.ppt
《第7章CMSIS架构与STM32库开发方式6Hppt.ppt》由会员分享,可在线阅读,更多相关《第7章CMSIS架构与STM32库开发方式6Hppt.ppt(61页珍藏版)》请在咨信网上搜索。
1、Embedded System Development聊城大学聊城大学 理工学院理工学院曹银杰曹银杰 嵌入式系统与应用嵌入式系统与应用 第第7章章 CMSIS架构与架构与STM32库开发方式库开发方式F7.1 STM32库简介介F7.2 STM32结构及构及库层次关系次关系F7.3 库文件及使用文件及使用简介介F7.4 GPIOF7.5 stm32f10 x.hstm32f10 x.h中中GPIO代代码剖析剖析F7.6 GPIO控制控制LEDLED灯实验灯实验F7.7 时钟设置与开启外置与开启外设时钟 7.1 STM32库简介FSTM32STM32外设资源丰富,寄存器的数量多、设置复杂度高,外
2、设资源丰富,寄存器的数量多、设置复杂度高,直接配置寄存器方式开发程序效率低。直接配置寄存器方式开发程序效率低。FSTM32STM32库是由库是由STST公司针对公司针对STM32STM32提供的函数接口,即提供的函数接口,即API API(Application Program Interface)(Application Program Interface),F库是架设在寄存器与用户驱动层之间的代码,向下处理库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器与寄存器直接相关的配置,向上为用户提供配置寄存器的接口。的接口。STM32库简介F开发者可
3、调用这些函数接口来配置开发者可调用这些函数接口来配置STM32STM32的寄存器,开的寄存器,开发快速,易于阅读,维护成本低等优点。发快速,易于阅读,维护成本低等优点。F事实上,库函数的底层实现恰恰是直接配置寄存器方式事实上,库函数的底层实现恰恰是直接配置寄存器方式的最佳例子,想深入了解芯片是如何工作的话,只要追的最佳例子,想深入了解芯片是如何工作的话,只要追踪到库的最底层实现就能理解。踪到库的最底层实现就能理解。F想修炼想修炼C C语言,就从语言,就从STST的库开始。的库开始。7.2 STM32结构及库层次关系F解决不同的芯片厂商生产的解决不同的芯片厂商生产的CortexCortex微控制
4、器软件的兼容微控制器软件的兼容性问题,性问题,ARMARM与芯片厂商建立了一个软件抽象层。与芯片厂商建立了一个软件抽象层。CMSISCMSIS标准:标准:Cortex MicroController Software Interface Cortex MicroController Software Interface StandardStandard。CMSIS架构STM32结构及库层次关系FCMSISCMSIS标准中最主要的为标准中最主要的为CMSISCMSIS核心层,它包括了:核心层,它包括了:F 内核函数层:其中包含用于访问内核寄存器的名称、内核函数层:其中包含用于访问内核寄存器的名称
5、、地址定义,主要由地址定义,主要由ARMARM公司提供。公司提供。F 设备外设访问层:提供了片上的核外外设的地址和设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供中断定义,主要由芯片生产商提供F可见可见CMSISCMSIS层位于硬件层与操作系统或用户层之间,提层位于硬件层与操作系统或用户层之间,提供了与芯片生产商无关的硬件抽象层,可以为接口外设、供了与芯片生产商无关的硬件抽象层,可以为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,这对软件的移植是有极大的好处的。差异,这对软件的移植是有极大的好处的。FS
6、TM32STM32的库,就是按照的库,就是按照CMSISCMSIS标准建立的。标准建立的。7.3 库文件及使用简介F新建工程新建工程-选择芯片后芯片后F选择运行运行环境、用的境、用的库、驱动文件、文件、RTX等等编译时自自动添加其他用的添加其他用的库文件文件库文件及使用简介FARMARM公司提供的:如公司提供的:如F core_cm3.h core_cm3.h、及、及core_core_前缀的头文件,核内设备函数层,前缀的头文件,核内设备函数层,进入进入M3M3内核的接口。内核的接口。F stdin.h stdin.h 头文件,这是一个头文件,这是一个ANSI C ANSI C 文件,是独立于
7、处文件,是独立于处理器之外的,就像我们熟知的理器之外的,就像我们熟知的C C语言头文件语言头文件 stdio.h stdio.h 文文件一样。件一样。F misc.h misc.h和和misc.cmisc.c是和是和CM3内核有关的内核有关的NVIC和和SysTick的的驱动代代码。自行添加到工程。自行添加到工程。FSTST公司提供的:公司提供的:F stm32f10 x.h stm32f10 x.h 重要文件,定义寄存器地址、寄存器数重要文件,定义寄存器地址、寄存器数据结构、中断向量表。据结构、中断向量表。F stm32f10 x_adc.c stm32f10 x_adc.c、stm32f1
8、0 x_adc.hstm32f10 x_adc.h,针对模数转换,针对模数转换(ADC)(ADC)外设,还有很多其他设备外设的驱动程序。外设,还有很多其他设备外设的驱动程序。F 每个外设对应一个每个外设对应一个 .c.c 和和 .h.h 后缀的文件。后缀的文件。库文件及使用简介Fstartup_stm32f10 x_xx.sstartup_stm32f10 x_xx.s 启动文件启动文件,作用是:作用是:F 1.1.初始化堆栈指针初始化堆栈指针SP;SP;F 2.2.初始化程序计数器指针初始化程序计数器指针PC;PC;F 3.3.设置堆、栈的大小设置堆、栈的大小;F 4.4.设置异常向量表的入
9、口地址设置异常向量表的入口地址;F 5.5.配置外部配置外部SRAMSRAM作为数据存储器(这个由用户配置,一作为数据存储器(这个由用户配置,一般的开发板可没有外部般的开发板可没有外部SRAMSRAM);F 6.6.设置设置C C库的分支入口库的分支入口_main_main(最终调用(最终调用mainmain函数)函数);F 7.7.启动文件还调用了在启动文件还调用了在system_stm32f10 x.csystem_stm32f10 x.c文件中的文件中的SystemIni()SystemIni()函数配置系统时钟。函数配置系统时钟。Fsystem_stm32f10 x.csystem_s
10、tm32f10 x.c文件提供了两个函数和一个全局文件提供了两个函数和一个全局变量量库文件及使用简介Fstm32f10 x.hstm32f10 x.h头文件中重要的内容就是把头文件中重要的内容就是把STM32STM32的所有寄的所有寄存器进行地址映射。存器进行地址映射。F如同如同5151单片机的单片机的头文件一样,头文件一样,stm32f10 x.hstm32f10 x.h像像一个大表格,我们在使用的时候就是通过宏定义进行类一个大表格,我们在使用的时候就是通过宏定义进行类似查表的操作。似查表的操作。F没有这个文件的话没有这个文件的话,怎样,怎样访问访问STM32STM32的的寄存器,有寄存器,
11、有什么什么缺点?缺点?-1 1、需要查手册来确定哪个地址对应哪个寄存器。、需要查手册来确定哪个地址对应哪个寄存器。-2 2、地址易写错、可读性差、易出错、开发效率低。、地址易写错、可读性差、易出错、开发效率低。库文件及使用简介F库函数,就是库函数,就是STM32STM32的库文件中为我们编写好的函数接的库文件中为我们编写好的函数接口,调用这些库函数,就可以对口,调用这些库函数,就可以对STM32STM32进行配置。我们进行配置。我们可以不知道库函数是如何实现的,但必须要知道函数的可以不知道库函数是如何实现的,但必须要知道函数的功能、可传入的参数及其意义、和函数的返回值。功能、可传入的参数及其意
12、义、和函数的返回值。F库函数很多,学会查阅库帮助文档就行!库函数很多,学会查阅库帮助文档就行!F库帮助文档:库帮助文档:stm32f10 x_stdperiph_lib_um.chmstm32f10 x_stdperiph_lib_um.chm层层打开文档的目录标签即可层层打开文档的目录标签即可。在用库函数的地方,直接从库帮助文档复制即可。在用库函数的地方,直接从库帮助文档复制即可。思考题:F1 1、没有、没有stm32f10 x.hstm32f10 x.h头文件的话,怎样访问头文件的话,怎样访问STM32STM32的寄的寄存器,有什么缺点?存器,有什么缺点?F2 2、从、从STM32STM3
13、2库的实现原理上解答库的实现原理上解答 库到底是什么?为什库到底是什么?为什么要用库?用库函数与直接配置寄存器的区别等问题。么要用库?用库函数与直接配置寄存器的区别等问题。7.4 GPIOFGPIO(General Purpose I/O)通用型输入)通用型输入/输出,主输出,主要用于需要用到要用于需要用到数字量输入数字量输入/输出输出的场合。的场合。F如:如:继电器、继电器、LED、蜂鸣器等的控制;、蜂鸣器等的控制;传感器状态、高低电平等信息的输入等。传感器状态、高低电平等信息的输入等。1、GPIO简介F大部分大部分GPIOGPIO为推挽输出,具为推挽输出,具有完整有完整I I2 2C C功
14、能的是开漏结构;功能的是开漏结构;F正常拉出灌入电流为正常拉出灌入电流为4mA4mA,短,短时间极限值时间极限值40mA40mA;F管脚可承受最大管脚可承受最大5V5V的输入电的输入电压。压。FGPIOGPIO寄存器位于寄存器位于AHBAHB总线上,总线上,可以进行高性能的可以进行高性能的 CPUCPU快速快速访问,支持访问,支持Cortex-M3Cortex-M3位带操位带操作。作。FGPIOGPIO允许进行允许进行DMADMA数据操作。数据操作。GPIO简介FGPIOGPIO引脚又被分为引脚又被分为GPIOAGPIOA、GPIOBGPIOBGPIOGGPIOG不同的组,每不同的组,每组端口
15、分为组端口分为015015,共,共1616个不同的引脚,不同芯片的端口个不同的引脚,不同芯片的端口组数不同。组数不同。GPIOGPIO结构图:结构图:端口配置寄存器GPIO简介FI/OI/O引脚可通过引脚可通过端口配置寄存器端口配置寄存器设置设置成不同的功能。成不同的功能。四种四种输入模式(结构图上半部分):输入模式(结构图上半部分):F上拉输入与下拉输入:与上拉输入与下拉输入:与VDDVDD相连的为上拉电阻相连的为上拉电阻,与,与VSSVSS相连的为下拉电阻。相连的为下拉电阻。再经施密特触发器再经施密特触发器就就把信号把信号转化为转化为0 0、1 1存储存储在输入数据在输入数据寄存器。寄存器
16、。F浮空输入:不接上拉与下拉电阻,直接由触发器输入,浮空输入:不接上拉与下拉电阻,直接由触发器输入,由于其输入阻抗较大,一般把这种模式用于标准的通讯由于其输入阻抗较大,一般把这种模式用于标准的通讯协议如协议如I2CI2C、USARTUSART的接收的接收端。端。F模拟输入:模拟输入:把电压把电压信号直接传送信号直接传送到片上外设到片上外设模块,如模块,如ADCADC。GPIO简介F结构图下半部分为输出模式结构:结构图下半部分为输出模式结构:F推挽输出模式:在输出高电平时,推挽输出模式:在输出高电平时,P-MOSP-MOS导通,低电平导通,低电平时,时,N-MOSN-MOS管导通。管导通。F开漏
17、输出模式:输出开漏输出模式:输出0 0时为低电平,时为低电平,1 1为高阻状态。为高阻状态。F在使用任何一种开漏模式,都需要接上拉电阻。在使用任何一种开漏模式,都需要接上拉电阻。GPIO简介 STM32P0.xP2.xFGPIOGPIO都可配置为中断功能,并可设置为上升沿、下降沿都可配置为中断功能,并可设置为上升沿、下降沿或边沿触发。或边沿触发。上升沿中断下降沿中断 边沿中断 GPIO中断还具有掉电唤醒功能2、GPIO端口配置寄存器F端口配置低寄存器端口配置低寄存器GPIOx_CRL(配置配置0707引脚引脚),端口,端口配置高寄存器配置高寄存器GPIOx_CRH(GPIOx_CRH(配置配置
18、815815引脚引脚)(x=A(x=AG)G)。F可将可将I/OI/O口配置为输入、输出或模拟模式;口配置为输入、输出或模拟模式;PIOx_CRL复位值:复位值:4444 4444h4444 4444h,偏移地址:,偏移地址:00h00h。F每个引脚的模式由寄存器的每个引脚的模式由寄存器的4 4个位控制,又分引脚配置个位控制,又分引脚配置(CNFy1:0)(CNFy1:0),引脚的模式,引脚的模式(MODEy1:0)(MODEy1:0),其中,其中y y表示第表示第y y个引脚。个引脚。GPIOx_CRLGPIO端口配置寄存器例:CRH高寄存器的配置FPIOx_CRHF复位值:复位值:4444
19、 4444h4444 4444h,偏移地址:,偏移地址:04h04h。F例:例:GPIOx_CRHGPIOx_CRH寄存器的第寄存器的第2828至至2929位设置为位设置为1111,并在第,并在第3030至至3131位设置为位设置为0000F答:则把答:则把x x端口第端口第1515个引脚的模式配置成了:输出的最个引脚的模式配置成了:输出的最大速度为大速度为50MHz50MHz的的 通用推挽输出模式。通用推挽输出模式。3、端口输入数据寄存器GPIOx_IDRF端口输入数据寄存器端口输入数据寄存器(GPIOx_IDR)(x=A.E)(GPIOx_IDR)(x=A.E)F复位值:复位值:4444
20、4444h 4444 4444h,地址偏移:,地址偏移:08h08hF高位高位31:1631:16保留,始终读为保留,始终读为0 0。FIDRx15:0IDRx15:0:端口输入数据:端口输入数据(x=0(x=015)15)F这些位为只读并只能以字的形式读出。读出的值为对应这些位为只读并只能以字的形式读出。读出的值为对应I/OI/O口的状态。口的状态。4、端口输出数据寄存器GPIOx_ODRF端口输出数据寄存器端口输出数据寄存器(GPIOx_ODR)(x=A.E)(GPIOx_ODR)(x=A.E)设置设置I/OI/O口口的方向输入还是输出。的方向输入还是输出。F复位值:复位值:4444 44
21、44h 4444 4444h,地址偏移:,地址偏移:0Ch0ChF高位高位31:1631:16保留,始终为保留,始终为0 0。FODRx15:0ODRx15:0:端口输出数据方向:端口输出数据方向(x=0(x=015)15)F这些位可读可写并只能以字的形式操作。这些位可读可写并只能以字的形式操作。F通过通过GPIOx_BSRR(x=AGPIOx_BSRR(x=AE)E),可以分别地对各个,可以分别地对各个ODRODR位位进行独立的置位进行独立的置位/清零。清零。5、端口置位/清零寄存器GPIOx_BSRRF端口置位端口置位/清零寄存器清零寄存器(GPIOx_BSRR)(x=A.E)(GPIOx
22、_BSRR)(x=A.E)F复位值:复位值:4444 4444h 4444 4444h,地址偏移:,地址偏移:10h10h6、端口位复位寄存器(GPIOx_BRR)F端口位复位寄存器端口位复位寄存器(GPIOx_BRR)(x=A.E)(GPIOx_BRR)(x=A.E)F复位值:复位值:4444 4444h 4444 4444h,地址偏移:,地址偏移:14h14h7、端口配置锁定寄存器GPIOx_LCKRF端口配置锁定寄存器端口配置锁定寄存器(GPIOx_LCKR)(x=A.E)(GPIOx_LCKR)(x=A.E)F复位值:复位值:4444 4444h 4444 4444h,地址偏移:,地址
23、偏移:14h14hF当执行正确的写序列设置了位当执行正确的写序列设置了位16(LCKK)16(LCKK)时,该寄存器用时,该寄存器用来锁定端口位的配置。来锁定端口位的配置。F位位15:015:0用于锁定用于锁定GPIOGPIO端口的配置。在规定的写入操作端口的配置。在规定的写入操作期间,不能改变期间,不能改变LCKP15:0LCKP15:0。F当对相应的端口位执行了当对相应的端口位执行了LOCKLOCK序列后,在下次系统复位序列后,在下次系统复位之前将不能再更改端口位的配置。之前将不能再更改端口位的配置。F每个锁定位锁定控制寄存器每个锁定位锁定控制寄存器(CRL,CRH)(CRL,CRH)中相
24、应的中相应的4 4个位。个位。例:F要控制引脚电平高低,需要对寄存器进行什么操作?要控制引脚电平高低,需要对寄存器进行什么操作?F一个引脚一个引脚y y的输出数据由的输出数据由GPIOx_BSRRGPIOx_BSRR寄存器位的寄存器位的2 2个位来个位来控制分别为控制分别为BRy(Bit Reset y)BRy(Bit Reset y)和和BSy(Bit Set y)BSy(Bit Set y),BRyBRy位用于写位用于写1 1清零,使引脚输出低电平;清零,使引脚输出低电平;BSyBSy位用来写位用来写1 1置置1 1,使引脚输出高电平。,使引脚输出高电平。8、GPIO输入输出演示GPIOx
25、_IDRGPIOx_IDR10BRy 写1Bsy 写1INOUT10GPIOx_ODRGPIOx_ODRGPIOx_PUPDRGPIOx_PUPDRvccGPIOGPIOx_CRLGPIOx_CRL 设置引脚为GPIO功能 1 配置引脚模式 2 设置GPIO的方向 3 设置GPIO输出电平 4 GPIO输入 GPIO输出1高电平高电平1输出操作流程输出操作流程输入操作流程输入操作流程1 读取GPIO引脚电平 4 GPIOx_BSRR7.5 stm32f10 x.hstm32f10 x.h库中库中GPIO代码剖析代码剖析F以外设以外设GPIOCGPIOC为例,文件中包含如下宏定义:为例,文件中包
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CMSIS 架构 STM32 开发 方式 Hppt
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。