STM32_中断_定时器.ppt_第1页
STM32_中断_定时器.ppt_第2页
STM32_中断_定时器.ppt_第3页
STM32_中断_定时器.ppt_第4页
STM32_中断_定时器.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

STM32的中断 定时器 暨南大学电子设计大赛培训资料 2011年7月24日彭煜 目录 STM32中的优先级概念 2 STM32外部中断例程讲解 3 STM32的定时器简介 4 STM32定时器例程讲解 5 什么是 中断 中断服务程序 发申请 中断服务程序 发申请 外设 CPU CPU执行程序时 由于发生了某种随机的事件 外部或内部 引起CPU暂时中断正在运行的程序 转去执行一段特殊的服务程序 中断服务子程序或中断处理程序 以处理该事件 该事件处理完后又返回被中断的程序继续执行 这一过程称为中断 EG 吃饭时突然手机铃响 中断示意图 STM32中的优先级概念 STM32 Cortex M3 中有两个优先级的概念 抢占式优先级和响应优先级 也把响应优先级称作 亚优先级 或 副优先级 每个中断源都需要被指定这两种优先级 1 何为占先式优先级 pre emptionpriority 高占先式优先级的中断事件会打断当前的主程序 中断程序运行 抢断式优先响应 俗称中断嵌套 2 何为副优先级 subpriority 在占先式优先级相同的情况下 高副优先级的中断优先被响应 在占先式优先级相同的情况下 如果有低副优先级中断正在执行 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到响应 非抢断式响应 不能嵌套 3 判断中断是否会被响应的依据首先是占先式优先级 其次是副优先级 占先式优先级决定是否会有中断嵌套 4 优先级冲突的处理具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应 即中断的嵌套 或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断 当两个中断源的抢占式优先级相同时 这两个中断将没有嵌套关系 当一个中断到来后 如果正在处理另一个中断 这个后到来的中断就要等到前一个中断处理完之后才能被处理 如果这两个中断同时到达 则中断控制器根据他们的响应优先级高低来决定先处理哪一个 如果他们的抢占式优先级和响应优先级都相等 则根据他们在中断表中的排位顺序决定先处理哪一个 STM32中的优先级概念 5 stm32中对中断优先级的定义STM32中指定中断优先级的寄存器位有4位 这4个寄存器位的分组方式如下 第0组 所有4位用于指定响应优先级第1组 最高1位用于指定抢占式优先级 最低3位用于指定响应优先级第2组 最高2位用于指定抢占式优先级 最低2位用于指定响应优先级第3组 最高3位用于指定抢占式优先级 最低1位用于指定响应优先级第4组 所有4位用于指定抢占式优先级 具体怎样设置在例程中详细讲解 STM32中的优先级概念 STM32外部中断 STM32单片机80个通用I O端口连接到19个外部中断 事件源上 左图为STM32单片机通用I O与外部中断的映射关系 PAx PBx PCx PDx和PEx端口对应的是同一个外部中断 事件源EXTIx x 0 15 EXTI Line值 P99NVIC IRQChannel值 P166 voidGPIO Configuration void 输入输出管脚配置 GPIO InitTypeDefGPIO InitStructure 配置输出脚PC0控制LED灯GPIO InitStructure GPIO Pin GPIO Pin 0 GPIO InitStructure GPIO Speed GPIO Speed 50MHz GPIO InitStructure GPIO Mode GPIO Mode Out PP GPIO Init GPIOC STM32外部中断例程讲解 voidNVIC Configuration void 嵌套向量中断控制器配置 NVIC InitTypeDefNVIC InitStructure NVIC PriorityGroupConfig NVIC PriorityGroup 1 选择优先级组别NVIC InitStructure NVIC IRQChannel EXTI0 IRQn 选择中断通道 EXTI线0中断 因为按键连接的是PA0脚NVIC InitStructure NVIC IRQChannelPreemptionPriority 0 0级抢占式优先级NVIC InitStructure NVIC IRQChannelSubPriority 0 0级副优先级NVIC InitStructure NVIC IRQChannelCmd ENABLE 使能引脚作为中断源NVIC Init 调用NVIC Init固件库函数进行设置 STM32外部中断例程讲解 固件中P166 voidEXTI Configuration void 调用固件库中的GPIO EXTILineConfig函数 其中两个参数分别是中断口和中断口对应的引脚号GPIO EXTILineConfig GPIO PortSourceGPIOA GPIO PinSource0 EXTI InitStructure EXTI Line EXTI Line0 将中断映射到中断 事件源Line0EXTI InitStructure EXTI Mode EXTI Mode Interrupt 中断模式EXTI InitStructure EXTI Trigger EXTI Trigger Falling 设置为下降沿中断EXTI InitStructure EXTI LineCmd ENABLE 中断使能 即开中断EXTI Init 调用EXTI Init固件库函数 将结构体写入EXTI相关寄存器中 STM32外部中断例程讲解 固件中P99 voidEXTI0 IRQHandler void if EXTI GetITStatus EXTI Line0 RESET 将LED1的状态反转GPIO WriteBit GPIOC GPIO Pin 0 BitAction 1 GPIO ReadOutputDataBit GPIOC GPIO Pin 0 清中断EXTI ClearITPendingBit EXTI Line0 STM32外部中断例程讲解 注意 中断服务函数都包含在 stm32f10 x it c 文件中 用的时候只需添加指令即可 STM32外部中断下载测试 下载完程序后 按按键K1触发中断 LED灯B1状态反转 实际操作 修改程序 使中断通过按键K3触发 同时4个LED灯状态反转 STM32定时器简介 STM32中一共有11个定时器 其中2个高级控制定时器 4个普通定时器和2个基本定时器 以及2个看门狗定时器和1个系统嘀嗒定时器 其中系统嘀嗒定时器是前文中所描述的SysTick 主要讲普通定时器定时器 TIM2 TIM5是普通定时器 TIM6和TIM7是基本定时器 其时钟由APB1输出产生 2 1时钟来源计数器时钟可以由下列时钟源提供 内部时钟 CK INT 外部时钟模式1 外部输入脚 TIx 外部时钟模式2 外部触发输入 ETR 内部触发输入 ITRx 使用一个定时器作为另一个定时器的预分频器 如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器 由于今天的学习是最基本的定时功能 所以采用内部时钟 TIM2 TIM5的时钟不是直接来自于APB1 而是来自于输入为APB1的一个倍频器 这个倍频器的作用是 当APB1的预分频系数为1时 这个倍频器不起作用 定时器的时钟频率等于APB1的频率 当APB1的预分频系数为其他数值时 即预分频系数为2 4 8或16 这个倍频器起作用 定时器的时钟频率等于APB1的频率的2倍 通过倍频器给定时器时钟的好处是 APB1不但要给TIM2 TIM5提供时钟 还要为其他的外设提供时钟 设置这个倍频器可以保证在其他外设使用较低时钟频率时 TIM2 TIM5仍然可以得到较高的时钟频率 STM32定时器简介 2 2计数器模式TIM2 TIM5可以由向上计数 向下计数 向上向下双向计数 向上计数模式中 计数器从0计数到自动加载值 TIMx ARR计数器内容 然后重新从0开始计数并且产生一个计数器溢出事件 在向下模式中 计数器从自动装入的值 TIMx ARR 开始向下计数到0 然后从自动装入的值重新开始 并产生一个计数器向下溢出事件 而中央对齐模式 向上 向下计数 是计数器从0开始计数到自动装入的值 1 产生一个计数器溢出事件 然后向下计数到1并且产生一个计数器溢出事件 然后再从0开始重新计数 STM32定时器简介 voidGPIO Config void GPIO InitTypeDefGPIO InitStructure 定义固件函数库中已经定义好的数据结构的变量 变量类型 GPIO InitTypeDef 变量名 GPIO InitStructure 使能各端口时钟 和利用端口AFIO时钟RCC APB2PeriphClockCmd RCC APB2Periph GPIOA RCC APB2Periph GPIOB RCC APB2Periph GPIOC RCC APB2Periph GPIOD RCC APB2Periph GPIOE RCC APB2Periph AFIO ENABLE GPIO InitStructure GPIO Pin GPIO Pin 0 GPIO Pin 1 GPIO Pin 2 GPIO Pin 3 选择端口位GPIO InitStructure GPIO Speed GPIO Speed 50MHz 选择端口时钟GPIO InitStructure GPIO Mode GPIO Mode Out PP 选择端口输出方式GPIO Init GPIOC STM32定时器例程讲解 查询方式 voidTimer Config void TIM TimeBaseInitTypeDefTIM TimeBaseStructure 定义TIM结构体变量RCC APB1PeriphClockCmd RCC APB1Periph TIM2 ENABLE 使能TIM2外设TIM DeInit TIM2 复位时钟TIM2 恢复到初始状态TIM TimeBaseStructure TIM Period 35999 TIM TimeBaseStructure TIM Prescaler 1999 TIM TimeBaseStructure TIM ClockDivision TIM CKD DIV1 TIM2时钟分频TIM TimeBaseStructure TIM CounterMode TIM CounterMode Up 计数方式 定时时间T计算公式 T TIM Period 1 TIM Prescaler 1 TIMxCLK 35999 1 1999 1 72MHz 1sTIM TimeBaseInit TIM2 使能TIM2 STM32定时器例程讲解 查询方式 程序主循环while 1 if TIM GetFlagStatus TIM2 TIM FLAG Update RESET 查询TIM FLAG Update标志置位了就清除标志 TIM ClearFlag TIM2 TIM FLAG Update 清标志switch state case0 GPIO SetBits GPIOC GPIO Pin 0 GPIO ResetBits GPIOC GPIO Pin 1 GPIO ResetBits GPIOC GPIO Pin 2 default break if state 5 state 0 STM32定时器例程讲解 查询方式 STM32定时器例程讲解 中断方式 voidNVIC Config void NVIC InitTypeDefNVIC InitStructure 定义结构体变量NVIC PriorityGroupConfig NVIC PriorityGroup 0 设置优先分级组NVIC InitStructure NVIC IRQChannel TIM2 IRQn 选择中断通道 注意 固件库中为XXX IRQChannel 但该程序预定义为XXX IRQn 所以要特别注意NVIC InitStructure NVIC IRQChannelPreemptionPriority 0 先占优先级NVIC InitStructure NVIC IRQChannelSubPriority 0 从优先级NVIC InitStructure NVIC IRQChannelCmd ENABLE 使能中断向量配置NVIC Init 按以上设置初始化中断向量 固件中P166 voidTimer Config void TIM TimeBaseInitTypeDefTIM TimeBaseStructure 定义TIM结构体变量RCC APB1PeriphClockCmd RCC APB1Periph TIM2 ENABLE 使能TIM2外设TIM DeInit TIM2 复位时钟TIM2 恢复到初始状态TIM TimeBaseStructure TIM Period 35999 TIM TimeBaseStructure TIM Prescaler 1999 TIM TimeBaseStructure TIM ClockDivision TIM CKD DIV1 TIM2时钟分频TIM TimeBaseStru

温馨提示

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

评论

0/150

提交评论