STM32F103的流水灯点亮版本1(寄存器地址操作) |
您所在的位置:网站首页 › c语言控制led灯 › STM32F103的流水灯点亮版本1(寄存器地址操作) |
目录 一、问题提出: 二、STM32F103系列芯片的地址映射和寄存器映射原理 1、寄存器: 2、存储器映射: 3.寄存器映射: 三、GPIO端口的初始化设置 1、打开时钟: 2.初始化GPIO口: 3、设置高电平: 四、工程文件建立与项目编写 1、STM32(keil)项目创建: 2、项目准备: 3、项目编写: 五、STM32LED流水灯Proteus仿真(解决第一问) 1、Proteus项目创建: 2、建立Proteus项目电路图: 3、编译STM32(Keil)项目 编辑 4、运行Proteus仿真电路: 六、STM32LED流水灯板子实现 6.1、解决第二问的题干问题和1与2两个小问(外接红、黄、绿三个灯来形成流水灯) 1、对实物STM32进行连接电路: 2、烧录代码: 3、烧录进STM32板子效果: 6.2、解决第二问的最后第三小问(外接红、黄灯和利用STM已有接好的PC13上的绿灯来形成流水灯) 1、对实物STM32进行连接电路: 2、烧录代码: 七、总结 八、参考资料 一、问题提出:1、了解STM32最小系统核心板(STM32F103C8T6,国际上又统称 STM32 Blue Bill开发板)的电路原理图,用Proteus 设计一个STM32最小系统板+LED流水灯实验原理图,仿真运行。 2、以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只_(或更多)红绿蓝LED 搭建电路,使用GPIOA、GPIOB、GPIOC这3个端口控制LED灯,轮流闪烁,间隔时长1秒。 1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数; 2)用C语言寄存器方式编程实现,代码须有详细注解。 3)STM32最小系统核心板子出厂时已经焊接好了1个led灯(标注了PC13处),一般可通过此灯的点亮让编程者验证自己烧录的代码是否正常运行了。请查阅最小版电路原理图和相关资料,将这个灯也用在流水灯中,重编新程序。 二、STM32F103系列芯片的地址映射和寄存器映射原理 1、寄存器:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。 简单来说,寄存器就是存放东西的东西。寄存器存放的是指令、数据或地址。 存放数据的寄存器是最好理解的,如果你需要读取一个数据,直接到这个寄存器所在的地方来问问他,数据是多少就行了。问寄存器这个动作,叫做访问寄存器。不同的数据会存放在不同的寄存器,例如引脚PA2与PB8的高低电平数据(1或0)肯定放在不同的寄存器里,那么怎么区分不同的寄存器呢?通过地址,不同的寄存器有不同的地址,就像老张行李寄存处在101号店铺,老王行李寄存处在258号店铺。 指令、地址寄存器与数据寄存器类似,里边存放的都是0和1,毕竟单片机也只认识机器码,机器码都是0或1,只是特别的规定下,数据寄存器里面存放的0和1表示数据,指令寄存器里存放的表示指令。 2、存储器映射:存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射,具体见图。如果给存储器再分配一个地址就叫存储器重映射。 3、寄存器映射:在存储器 Block2 这块区域,设计的是片上外设,它们以四个字节为一个单元,共 32bit,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。我们可以找到每个单元的起始地址,然后通过 C 语言指针的操作方式来访问这些单元,如果每次都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。 三、GPIO端口的初始化设置GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 STM32F103VET6 型号芯片有 GPIOA、GPIOB、GPIOC至 GPIOE共 5组 GPIO,芯片一共 100个引脚,其中 GPIO就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。 点亮LED灯,实现流水灯效果需要用到GPIO端口。为了点亮LED灯,进行以下三个步骤: 打开GPIO口的时钟初始化GPIO口(选择推挽输出)设置低电平 1、打开时钟:GPIO的地址: 时钟的地址:
即0x40021018,则打开三个IO口的时钟需要将三个位都置1: #define RCC_APB2ENR (*(unsigned int *)0x40021018) // 打开时钟 RCC_APB2ENR |= (1 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |