C语言和汇编实现STM32F103点亮LED.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语⾔和汇编实现STM32F103点亮LED ⽬录 ⼀、芯⽚准备 1)芯⽚选取STM32F103C8T6 材料 :STM32最⼩系 核⼼板(STM32F103C8T6)+⾯包板+3只红绿黄LED 搭建电路,使⽤GPIOB、GPIOC、GPIOD这3个端⼝控制 LED灯 (最⾼时钟2Mhz),轮流闪烁,间隔时长1.34s (这⾥的间隔时长是实验所得)。 STM32F103C8T6是⼀款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V ,⼯ 作温度为-40°C ~ 85°C。 2)点亮流⽔灯原理 寄存器可以存储数据,指令,也可以担任⼀些特定的功能,stm32板⼦⾥由很多寄存器,如果想实现流⽔灯操作,就需要对相应的引脚进⾏ 操作,想对引脚进⾏操作,就需要对相应的引脚进⾏时钟使能配置、端⼝配置 (⾼或低)寄存器配置、端⼝输出寄存器配置。 1.因为流⽔灯要操作的引脚都是在GPIO端⼝的,所以根据系 结构图,属于AHB总线,所以所要⽤的端⼝的复位和时间控制都受RCC控 制。 2.再看寄存器组起始地址表,可以看到RCC的地址范围,且可以看到要控制的寄存器 (我的板⼦上只有ABC三种)都是在APB2总线。 3.跳到这⾥,就是外设时钟使能寄存器,,偏移量为0x 18,⽽在前⾯⼀个表可以看到起始地址为0x4002 1000,偏移量为0x 18,所以该 寄存器的地址为0x4002 10 18 4.图中圈处理就是该寄存器⾥各位的含义,⽐如第三位也就是2那个位置为 1时,就是GPIOA的时钟开启了。这时我们就可以⽤代码表达出 来了,以PA7引脚为例 : #define RCC_AP2ENR *((unsigned vo ati e int*)0 #时钟使能寄存器 RCC_AP2ENR|=12 ; //开启APB2-GPIOA外设时钟使能 5.接下来就是配置端⼝配置寄存器了,可以发现上⾯的时钟使能寄存器开启时钟是针对⼀个区域的,并不能确定引脚,⽽这个寄存器就是确 定引脚的,端⼝配置寄存器有两个,分别为端⼝配置低寄存器 (CRL)和端⼝配置⾼寄存器 (CRH),每四位配置⼀个端⼝,如11 、 0 1,11就是选择开启功能,0 1就是选择模式和确定最⼤速度,但有⼀点不⼀样,低寄存器的偏移地址为0x00,⾼寄存器的偏移地址为 0x04。 低寄存器 : ⾼寄存器 : 6.以PA7为⽰例,相应端⼝配置器GPIOA_CRL地址为GPIOA的基址+上偏移量,为0x400 10800,⽽这个端⼝要开启,所以要使对应位 为相应的值,我这⾥是0设置推挽输出并设置最⼤速度为2Mhz,下⾯为相应代码 : #define GPIOA_CRL *((unsigned vo ati e int*)0 GPIOA_CRL=0 // PA 7推挽输出,2Mhz 7.接下来就是配置端⼝输出寄存器 (ORD),可以看到偏移量为0xc,所以该寄存器的地址等于端⼝的基址加上偏移量,在相应的位赋值可 以控制输出电压,0为低电压,1为⾼电压,以PA7引脚为例⼦,想要输出⾼电压,就需要在第⼋位赋 1。 代码如下 : #define GPIOA_ORD *((unsigned vo ati e int*)0x4001080C) GPIOA_ORD|=17; //设置初始灯为亮 8.这⾥就可以控制led亮或者灭了,实现流⽔灯只需增加灯的数量和增加⼀些延时就⾏了。 ⼆、C语⾔点亮 1)keil创建项 ⽬及配置 1.打开keil,Proj ect-new μVision Proj ect : 2、设置项 ⽬⼯程的路径和名称,点击保存 2)配置环境 1、设置⼯程的⽬标环境,本实验基于STM32F103C8T6,因此在弹出的窗⼝选择相应的选项,这⾥没有STM32F103C8T6,所以选择 STM32F103C8,点击保存即可: 2、ARM的CMSIS已经把 开发所需要的软件组件都封装好了,因此直接选择即可: 3、⿏标右键单击Source Group 1,具体如下图所⽰ : 最后add,创建⽂件完成 ! 4.将代码粘贴进.c⽂件⾥ : // APB2使能时钟寄存器 #define RCC_AP2ENR *((unsigned vo ati e int*)0x4

文档评论(0)

139****2545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档