财务管理第04章LED灯控制与KeilMDK工程框架

上传人:种**** 文档编号:260545994 上传时间:2022-02-28 格式:PPTX 页数:85 大小:2.24MB
返回 下载 相关 举报
财务管理第04章LED灯控制与KeilMDK工程框架_第1页
第1页 / 共85页
财务管理第04章LED灯控制与KeilMDK工程框架_第2页
第2页 / 共85页
财务管理第04章LED灯控制与KeilMDK工程框架_第3页
第3页 / 共85页
财务管理第04章LED灯控制与KeilMDK工程框架_第4页
第4页 / 共85页
财务管理第04章LED灯控制与KeilMDK工程框架_第5页
第5页 / 共85页
亲,该文档总共85页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《财务管理第04章LED灯控制与KeilMDK工程框架》由会员分享,可在线阅读,更多相关《财务管理第04章LED灯控制与KeilMDK工程框架(85页珍藏版)》请在金锄头文库上搜索。

1、第4章 LED灯控制与Keil MDK工程框架1STM32F103通用目的输入输出口2STM32F103库函数用法3KeilMDK工程框架4LED灯闪烁实例目录4.1STM32F103通用目的输入输出口STM32F103ZET6微控制器具有7个16位的GPIO口,记为GPIOx(x=A,B,.,G),共占用了112个管脚图4-1GPIO端口结构4.1.1GPIO寄存器这里的xA,B,.,G,各个GPIO端口寄存器的基地址可查图2-4,每个寄存器的读写操作必须按整个字(32位)进行每个GPIO口具有7个寄存器2个32位的配置寄存器(GPIOx_CRL和GPIOx_CRH)2个32位的数据寄存器(

2、GPIOx_IDR和GPIOx_ODR)1个32位的置位/清零寄存器(GPIOx_BSRR)1个16位的清零寄存器(GPIOx_BRR)1个32位的配置锁定寄存器(GPIOx_LCKR)偏移地址名称类型复位值说明0 x00CRL读/写0 x44444444配置寄存器低位(每个端口4位)0 x04CRH读/写0 x44444444配置寄存器高位(每个端口4位)0 x08IDR读0 x000016位输入数据寄存器0 x0CODR读/写0 x000016位输出数据寄存器0 x10BSRR写0 x00000000位置位/复位寄存器0 x14BRR写0 x0000位复位(清零)寄存器0 x18LCKR读

3、/写0 x00000配置锁定寄存器4.1.1GPIO寄存器注:(1)ODR=1:上拉,ODR=0:下拉(2)01/10/11依次对应最大输出频率为10MHz/2MHz/50MHzCNF1:0MODE1:0输入配置CNF1:0MODE1:0(2)输出配置0000模拟输入0001/10/11通用推挽输出0100浮空输入(复位状态)0101/10/11通用开漏输出1000上拉/下拉输入(1)1001/10/11复用推挽输出1100保留1101/10/11复用开漏输出每个端口的4个配置位是CNF1:0和MODE1:0图4-4端口置位/清零寄存器GPIOx_RSRRl 图中的BRy和BSz写入0无效;l

4、 BRy写入1,则清零相应的端口管脚;l BSz写入1,则置位相应的端口管脚。l 例如,使GPIOE的第5管脚输出高电平,则使用语句“GPIOE_RSRR(1uL5);”;l 使GPIOE端口的第11管脚输出低电平,则使用语句“GPIOE_RSRR=(1uL11)16;”。l 如果使用端口输出数据寄存器GPIOE_ODR,则上述两个操作为“读出修改写回”处理,其语句为“GPIOE_ODR&=(1uL5);”和“GPIOE_ODR|=(1uL11)”,显然,直接写寄存器GPIOE_RSRR速度更快。l 上述使用GPIOx_RSRR清零某个GPIO端口的特定管脚时,有一个左移16位(“16”)的操

5、作,因为清零寄存器位于GPIOx_RSRR的高16位,为了省掉这个操作,GPIO模块还具有一个16位的端口清零寄存器GPIOx_BRR(偏移地址:0 x14,复位值为0 x0),每位记为BRy(y=0,1,.,15),各位写入0无效,写入1清零相应的端口管脚。l 例如,使GPIOE端口的第11管脚输出低电平,则可使用语句“GPIOE_BRR=(1uL11);”。l 配置锁定寄存器GPIOx_LCKR(偏移地址:0 x18,复位值为0 x0),用于锁定配置寄存器GPIOx_CRL和GPIOx_CRH的值,如图4-5所示。图4-5配置锁定寄存器GPIOx_LCKR在图4-5中,LCK15:0对应着

6、GPIO端口的16个管脚,例如,LCKy1,则GPIO端口的第y脚的配置被锁定,如果LCKy=0,则其配置是可以更新的。一旦某个GPIO管脚的配置被锁定,只有再次“复位GPIO口”,才能解锁。锁定某个管脚的配置的方法为,使该管脚对应的LCKy为1,然后,向LCKK顺序执行:写入1、写入0、写入1、读出0、读出1(其间LCK15:0的值不能改变)。例如,要锁定GPIOE端口的第5脚和第11脚的配置,则使用以下语句:l GPIOE_LCKR=(1uL11)|(1uL5);l GPIOE_LCKR=(1uL16)|(1uL11)|(1uL5);l GPIOE_LCKR=(1uL11)|(1uL5);

7、l GPIOE_LCKR=(1uL16)|(1uL11)|(1uL5);l v1=GPIOE_LCKR;l v2=GPIOE_LCKR;/(这里v1和v2为无符号32位整型)。上面提到的“复位GPIO口”是由复位与时钟控制模块(RCC)管理的,此外,GPIO模块(或其他外设模块)在使用前,必须通过RCC给相应的模块提供时钟源,相关的寄存器有APB2外设复位寄存器(RCC_APB2RSTR,偏移地址:0 x0C)和APB2外设时钟有效寄存器(RCC_APB2ENR,偏移地址:0 x18),由图2-4可知,RCC模块的基地址为0 x40021000。图4-6APB2外设复位寄存器RCC_APB2R

8、STR图4-7APB2外设时钟有效寄存器RCC_APB2ENRAPB2外设复位寄存器RCC_APB2RSTR(复位值为0 x0)和APB2外设时钟有效寄存器RCC_APB2ENR(复位值为0 x0)如图4-6和图4-7所示。l 对于图4-6中的RCC_APB2RSTR寄存器,各位写入0无效,写入1则复位相应的片上外设;l 对于图4-7的RCC_APB2ENR寄存器,各位写入0关闭相应外设的时钟,写入1开放相应外设的时钟。l 例如,要使用GPIOE口,则需要执行语句:l RCC_APB2ENR|=RCC_APB2ENR|(1uLODR|=(1uLBSRR=(1uLODR&=(1uLODR|=(1

9、uL5);程序段4-2自定义GPIOB_ODR寄存器1#defineGPIOB_ODR*(unsignedint*)0 x40010C0C23GPIOB_ODR&=(1uL5);4GPIOB_ODR|=(1uLBSRR=GPIO_Pin;8程序段4-3中,GPIO_Pin_5为常数(1uLBSRR=(1uL5);”,用库函数方式为“GPIO_SetBits(GPIOB,GPIO_Pin_5);”,显然后者封装了寄存器的各种信息,可读性更好,更接近自然语言。如果使用库函数进行工程设计,需要对表4-4中的文件,特别.h文件中每个常量和函数的含义做细致的研究,这需要花一定的时间。4.3KeilMDK

10、工程框架图4-8工程01文件夹结构安装好KeilMDK后,会在桌面上显示快捷图标“KeilMDKuVision5”,鼠标左键双击该图标进入图4-9所示窗口。图4-9KeilMDK工作主界面在图4-9中,单击“芯片支持包安装快捷钮”进入图4-10所示界面。图4-10芯片支持包在线安装窗口图4-10中的“Device”一栏中显示了KeilMDK开发环境所支持的芯片系列。在图4-10中,至少要安装图中所示的STM32F103系列的芯片支持包,前文提到的stm23f10 x.h文件就位于该支持包内。回到图4-9,在其中单击菜单“Project|NewVisionProject.”(“|”后的表示子菜单

11、项),弹出图4-11所示窗口。图4-11创建新工程对话框在图4-10中,选择目录“D:STM32F103ZET6工程工程01PRJ”,然后,在“文件名”一项中,输入工程文件名为“MyPrj”,点击“保存(S)”进入图4-12所示窗口。图4-12选择目标芯片型号对话框 在图4-12中,选择芯片STM32F103ZE,在“Description”中将显示该芯片的资源情况。在图4-12中单击“OK”按钮进入图4-13所示窗口。在图4-13中,选中“Core”、“DSP”、“GPIO”和“Startup”,依次表示向工程中添加Cortex-M3内核支持库、数字信号处理算法库、通用目的输入输出口驱动库和

12、芯片启动代码文件。当使用数字信号处理算法库中的函数时,需要在用户程序文件中包括头文件“arm_math.h”,DSP算法库中包含了大量经过优化的数学函数,可实现代数运算、复数运算、矩阵运算、数字滤波器和统计处理等,例如,浮点数的正弦、余弦和开方运算分别对应着以下三个函数:float32_ty=arm_sin_f32(float32_tx);float32_ty=arm_cos_f32(float32_tx);arm_sqrt_f32(float32_tx,float32_t*y);图4-13添加运行时(Run-Time)环境图4-14工程01工作界面-I在图4-14中,工程管理器显示新建的工程

13、为MyPrj,保存为“D:STM32F103ZET6工程工程01PRJMyPrj.uvprojx”。可修改工程管理器中的目标“Target1”和分组“SourceGroup1”的名称,单击“工程管理快捷钮”进入图4-15所示窗口。在图4-15中,将原来的目标“Target1”修改为“STM32F103ZET6”,即所使用的芯片型号;将原来的分组“SourceGroup1”删除,新建两个分组“USER”和“BSP”(注意,这里的分组名与工程在硬件中的保存目录名没有直接的关系)。点击“OK”按钮进入图4-16所示窗口。图4-15编辑工程管理器中的各项图4-16工程01工作界面-II在图4-16中,

14、工程管理器中有两个分组,即“USER”和“BSP”,这两个分组分别用于管理用户程序文件和板级支持包文件。图4-16中显示了常用的快捷按钮,如“新建文档按钮”用于打开一个文档输入窗口进行程序编辑;“在线调试快捷钮”用于在线仿真调试;“编译、编译链接、全部编译链接”三个快捷钮分别用于编译当前活跃文件、编译链接修改过的源文件和全部编译链接整个工程文件;“下载工程可执行代码到目标芯片”用于将编译链接成功后的.hex目标代码写入到STM32F103ZET6芯片的Flash存储器中。在图4-16中,鼠标右键单击“STM32F103ZET6”,在其弹出的菜单中选择“OptionsforTargetSTM32

15、F103ZET6.Alt+F7”,进入到图4-17所示窗口。图4-17目标选项卡在图4-17中,选中“IROM1”,长度为0 x80000(即512kBFLASH);选中“IRAM1”,长度为“0 x10000”(即64kB SRAM)。在图4-17中,选择“Output”页面,进入图4-18所示窗口。在图4-18中,设定工程生成的目标文件名为MyPrj,所在的路径为“.ObjectsMyPrj”,即工程所在路径下的“D:STM32F103ZET6工程工程01PRJObjectsMyPrj”,然后,选中“CreateHEXFile”复选框,表示编译链接后产生HEX格式的目标文件。在图4-18中

16、选择“C/C+”选项卡,进入图4-19所示窗口。图4-18“Output”输出目标文件路径和格式选项卡图4-19“C/C+”选项卡图4-20“Debug”选项卡在图4-19中,“IncludePaths”中指定工程编译时搜索文件的路径,这里的“.”表示工程所在的路径,即“D:STM32F103ZET6工程工程01PRJ”,“.”表示工程所在路径的上一个路径,即“D:STM32F103ZET6工程工程01”。然后,在图4-19中选择“Debug”选项卡,进入图4-20所示窗口。在图4-20中,由于这里使用了ULINK2仿真器,所以选择了“ULINK2/MECotexDebugger”,选中“Runtomain()”表示在线真调试时,程序计数器指针PC自动跳转到main函数执行,否则,PC将跳转到汇编语言编写的启动文件startup_stm32f10 x_hd.s中的Reset_Handler标号去执行。在图4-20中单击“Settings”按钮进入图4-21所示窗口。图4-21ULINK2仿真连接对话框图4-22FLASH编程算法选择对话框如果STM32F103战舰V3开发板已上电,且U

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号