《arm硬件结构应用》ppt课件

上传人:tia****nde 文档编号:69206072 上传时间:2019-01-12 格式:PPT 页数:55 大小:1.08MB
返回 下载 相关 举报
《arm硬件结构应用》ppt课件_第1页
第1页 / 共55页
《arm硬件结构应用》ppt课件_第2页
第2页 / 共55页
《arm硬件结构应用》ppt课件_第3页
第3页 / 共55页
《arm硬件结构应用》ppt课件_第4页
第4页 / 共55页
《arm硬件结构应用》ppt课件_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《《arm硬件结构应用》ppt课件》由会员分享,可在线阅读,更多相关《《arm硬件结构应用》ppt课件(55页珍藏版)》请在金锄头文库上搜索。

1、1.LPC和STM32 简介 2.STM32固件库 3.系统控制模块 4.引脚连接模块 5.GPIO操作 6.向量中断控制器 7.外中断输入,LPC和STM32系列ARM硬件结构与应用,8.定时器原理及应用 9.SPI接口及应用 10.UART接口及应用 11.A/D转换器及应用 12.看门狗 13.PWM原理与应用 14.实时时钟,4 引脚连接模块,概述,LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。,01,10,11,P0.0默认为GPIO功能,P0.0选择TXD0功能,配置

2、对应位为01,P0.0选择PWM1功能,配置对应位为10,P0.0选择保留功能,配置对应位为11,4 引脚连接模块,LPC2000系列微控制器具有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同 。,寄存器描述,4 引脚连接模块,应用示例,PINSEL0 = 0x05 16;,要求将P0.8、P0.9设置为TxD1、RxD1 通过查阅PINSE0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL019:16,当该域设置为0101 (0x05)时选择 RxD1和 TxD1。,为了不影响别的管脚连接设置,通常选

3、择下面的设置方法。,PINSEL0 = (PINSEL0 ,5 GPIO,引脚描述,LPC2114/2124微控制器具有两个端口P0和P1,可以作为GPIO使用的引脚数为46个。 LPC2210/2212/2214微控制器还包含另外两个端口P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个。,GPIO与控制寄存器的关系,引脚,GPIO相关寄存器描述,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxPIN,该寄存器反映了当前引脚的状态。IOxPIN中的x对应于某一个端口,

4、如P1口对应于IO1PIN。所以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。 写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。 注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxDIR,当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入功能。 作为输入功能时,引脚处于高阻态。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相

5、关寄存器描述IOxSET,当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。 从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxCLR,当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。 注意:读取该寄存器无效,不能读回输出寄存器的值。,5 GPIO,使用GPIO注意要点,引脚设置为输出方式时,输出状态由IOxSET和IOxC

6、LR中最后操作的寄存器决定; 大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA); 复位后默认所有GPIO为输入模式。,. PINSEL0 .,C代码:,PINSEL0,IO0DIR,IO0CLR,IO0PIN,IO0SET,in,out,1,0,GPIO应用示例设置P0.0输出高电平,P0.0,. uint32 PinStat; PINSEL0 .,C代码:,PINSEL0,IO0DIR,IO0CLR,IO0PIN,IO0SET,in,out,1,0,GPIO应用示例读取P0.0引脚状态,P0.0,IO0PIN,#define DataB

7、us 0xFF PINSEL0 .,使用IOxSET和IOxCLR实现:,GPIO应用示例输出多位数据至IO口,在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。 本例将8位无符号整形变量Data的值输出到P0.0P0.7。,数据输出线:,#define DataBus 0xFF PINSEL0 .,GPIO应用示例输出多位数据至IO口,在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者

8、可以在多个IO口上直接输出0和1电平。 本例将8位无符号整数变量Data的值输出到P0.0P0.7。,使用IOxPIN实现:,数据输出线:,STM32 GPIO操作,主要功能: 通用I/O(GPIO)用,输入输出; 单独的位设置或位清除; 外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力; 复用功能(AF),并且软件能重新映射I/O复用功能; GPIO锁定机制:主要针对复位设定的,当某端口位lock后,复位后将不改变的此端口的位配置。,STM32 GPIO操作,强大的GPIO功能,可设置: GPIOMode_TypeDef GPIO mode 定义及偏移地址 GPIO mo

9、de : GPIO_Mode_AIN 0x00 模拟输入 GPIO_Mode_IN_FLOATING 0x04 悬空输入 GPIO_Mode_IPD 0x28 下拉输入 GPIO_Mode_IPU 0x48 上拉输入 GPIO_Mode_Out_OD 0x14 开漏输出 GPIO_Mode_Out_PP 0x10 推挽输出 GPIO_Mode_AF_OD 0x1c 开漏复用 GPIO_Mode_AF_PP 0x18 推挽复用,STM32 GPIO操作,输出速度通过GPIOSpeed_TypeDef结构体可选择: 2MHz,10MHz,50MHz。,typedef enum GPIO_Speed

10、_10MHz, GPIO_Speed_2MHz, GPIO_Speed_50MHz GPIOSpeed_TypeDef;,固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,可以直接使用。,1. GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct):根据GPIO_InitTypeDef里面的值,初始化某排里面的某些引脚的模式跟速度 2. GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct):给GPIO_InitTypeDef里面的项目赋默认值 3. GPIO_S

11、etBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin):某排引脚某个引脚输出1,固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,可以直接使用。,4. GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin):某排引脚某个引脚输出0 5. GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal):设置某排引脚输出值 6. GPIO_ReadInputData(GPIO_TypeDef* GPIOx):读整排引脚的值 7. GPIO_ReadOutputD

12、ataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin):读某排引脚里面的输出寄存器的某个引脚值 ,操作实例,做个跑马灯程序,PA.11PA.14口分别4个LED灯,当I/O为高电平时LED灯点亮。,#include “stm32f10x.h” #include “stm32f10x_conf.h” GPIO_InitTypeDef PAInit; void LED_Init(void) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);/开GPIOC时钟 PAInit.GPIO_Pin = GPIO_

13、Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14; PAInit.GPIO_Mode = GPIO_Mode_Out_PP; PAInit.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA, ,main() LED_Init(); while(1) GPIO_SetBits(GPIOA, GPIO_Pin_11);/GPIOA.11=1 Delay(0x8ffff); GPIO_ResetBits(GPIOA, GPIO_Pin_11);/GPIOA.11=0 Delay(0x8ffff); GPIO_S

14、etBits(GPIOA, GPIO_Pin_12); Delay(0x8ffff); GPIO_ResetBits(GPIOA, GPIO_Pin_12); Delay(0x8ffff); GPIO_SetBits(GPIOA, GPIO_Pin_13); Delay(0x8ffff); GPIO_ResetBits(GPIOA, GPIO_Pin_13); Delay(0x8ffff); GPIO_SetBits(GPIOA, GPIO_Pin_14); Delay(0x8ffff); GPIO_ResetBits(GPIOA, GPIO_Pin_14); Delay(0x8ffff);

15、,6 向量中断控制器,概述,ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。向量中断控制器(VIC)负责管理芯片的中断源,最多可以管理32个中断输入请求。,CPU 内核 ARM7TDMI-S,6. 向量中断控制器,程序状态寄存器CPSR与VIC的关系,ARM内核通过CPSR来监视和控制内部的操作,CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ模式的使能。,CPU,ARM7TDMI-S,VIC,IRQ,FIQ,CPSR 7 (I),CPSR 6 (F),6. 向量中断控制器,程序状态寄存器CPSR与VIC的关系,当I = 1时,禁止IRQ中断,当I = 0时,使能IRQ中断,6. 向量中断控制器,程序状态寄存器CPSR与VIC的关系,当F = 1时,禁止FIQ中断,当F = 0时,使能FIQ中断,6. 向量中断控制器,中断分

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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