教学课件 4-跑马灯控制_第1页
教学课件 4-跑马灯控制_第2页
教学课件 4-跑马灯控制_第3页
教学课件 4-跑马灯控制_第4页
教学课件 4-跑马灯控制_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一跑马灯控制系统设计任务2跑马灯控制项目一跑马灯控制系统设计任务1任务2任务3点亮LED灯跑马灯控制系统设计蜂鸣器控制系统设计知识目标:1.会分析LED工作原理;2.会写延时函数。技能目标:1.会Keil5软件操作;2.会跑马灯控制系统设计和调试。素养目标:1.操作规范,符合5S管理要求;2.具备自主探究、勤学好问的态度。学习目标设计要求利用STM32实现跑马灯控制(即LED0点亮,延时后LED0熄灭,LED1点亮,再延时,LED1熄灭,LED0点亮,依次循环),设计硬件电路、编写控制程序并进行系统调试。硬件设计跑马灯硬件连接:

知识导航STM32中,我们这样来操作I/O口:GPIOA->ODR=0x1;值0x1是怎么赋值给了GPIOA的ODR寄存器地址的呢?也就是说GPIOA->ODR这种写法,是怎么与GPIOA的ODR寄存器地址映射起来的?知识导航

STM32处理器可支持4GB存储空间,并将其划分为大小相等的8块区域,每块区域大小为512MB。我们知道,存储器本身没有地址,给存储器分配地址的过程叫存储器映射,那什么叫寄存器映射?寄存器到底是什么?知识导航在存储器块2区域是片上外设区,我们以四个字节为一个单元,共32bit,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。我们可以找到每个单元的起始地址,然后通过C语言指针的操作方式来访问这些单元。知识导航如果每次都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器。这个过程,也就是给已经分配好地址的、有特定功能的内存单元取别名的过程就叫寄存器映射。知识导航片上外设区分为三条总线,根据外设速度的不同,不同总线挂载着不同的外设,APB1挂载低速外设,APB2和AHB挂载高速外设。相应总线的最低地址我们称为该总线的基地址,总线基地址也是挂载在该总线上的首个外设的地址。其中APB1总线的地址最低,片上外设从这里开始,也叫总线外设基地址。知识导航总线基地址总线名称总线基地址相对外设基地址的偏移APB10x400000000x00000000APB20x400100000x00010000AHB0x400180000x00018000总线基地址=外设基地址+相对外设基地址的偏移量外设基地址=0x40000000(APB1总线地址)知识导航我们以GPIO这个外设来讲解外设的基地址,GPIO属于高速的外设,挂载到APB2总线上。外设名称外设基地址相对APB2总线的地址偏移GPIOA0x400108000x00000800GPIOB0x40010C000x00000C00GPIOC0x400110000x00001000GPIOD0x400114000x00001400GPIOE0x400118000x00001800GPIOF0x40011C000x00001C00GPIOG0x400120000x00002000知识导航在GPIO外设的地址范围内,分布着它的寄存器。GPIO有很多个寄存器,每个端口都有8个寄存器,它们都有特定的功能。每个寄存器为32位,占四个字节,在该外设的基地址上按照顺序排列,寄存器的位置都以相对该外设基地址的偏移地址来描述。知识导航以GPIOB端口为例来说明GPIO都有哪些寄存器。寄存器名称寄存器地址相对GPIOB基地址的偏移GPIOB_CRL0x40010C000x00GPIOB_CRH0x40010C040x04GPIOB_IDR0x40010C080x08GPIOB_ODR0x40010C0C0x0CGPIOB_BSRR0x40010C100x10GPIOB_BRR0x40010C140x14GPIOB_LCKR0x40010C180x18

stm32f10x.h头文件中,有如下的定义:#definePERIPH_BASE((uint32_t)0x40000000)#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)#defineGPIOA_BASE(APB2PERIPH_BASE+0x0800)#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)typedefstruct{__IOuint32_tCRL;__IOuint32_tCRH;__IOuint32_tIDR;__IOuint32_tODR;__IOuint32_tBSRR;__IOuint32_tBRR;__IOuint32_tLCKR;}GPIO_TypeDef;寄存器地址名称映射分析延时函数知识导航延时函数通常有软件延时和定时器延时两种。软件延时是利用执行空指令操作实现延时,即通过for语句循环或嵌套实现。延时函数知识导航含参延时函数:/********延时函数delay1()********/voiddelay1(inti)//函数定义{intj,k;//变量定义for(k=i;k>0;k--)//一重循环for(j=1000;j>0;j--);//二重循环}不含参延时函数:/********延时函数delay2()********/voiddelay2() //函数定义{inti,j;//变量定义for(i=500;i>0;i--)//一重循环for(j=1000;j>0;j--);//二重循环}任务实现使能IO口时钟

配置寄存器RCC_APB2ENR

初始化IO口模式

配置寄存器GPIOx_CRH/CRL

操作IO口,输出高低电平

配置寄存器GPIOX_ODR任务实现intmain(void){ RCC->APB2ENR|=1<<3; RCC->APB2ENR|=1<<6;

GPIOB->CRL&=0xff0fffff; GPIOB->CRL|=0x00300000; GPIOE->CRL&=0xff0fffff; GPIOE->CRL|=0x00300000; while(1) { GPIOB->ODR=~(1<<5); GPI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论