第7章 定时器与开发实例_第1页
第7章 定时器与开发实例_第2页
第7章 定时器与开发实例_第3页
第7章 定时器与开发实例_第4页
第7章 定时器与开发实例_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第7章定时器与开发实例7.1STM32F4定时器概述STM32内部集成了多个定时/计数器。根据型号不同,STM32系列芯片最多包含8个定时/计数器。其中,TIM6和TIM7为基本定时器,TIM2~TIM5为通用定时器,TIM1和TIM8为高级控制定时器,功能最强。三种定时器具备的功能如表7-1所示。此外,在STM32中还有两个看门狗定时器和一个系统滴答定时器。表7-1STM32定时器的功能可编程定时/计数器(简称定时器)是当代微控制器标配的片上外设和功能模块。它不仅可以实现延时,而且还完成其他功能:(1)内部时钟源时,定时器可实现精准定时,支持普通、比较输出和PWM模式,适延时及波形输出。(2)外部时钟源时,定时器工作于输入捕获模式,用于测频、占空比及外部事件计数和时间测量。在嵌入式系统应用中,使用定时器可以完成以下功能:(1)在多任务的分时系统中用作中断实现任务的切换。(2)周期性执行某个任务,如每隔固定时间完成一次A/D采集。(3)延时一定时间执行某个任务,如交通灯信号变化。(4)显示实时时间,如万年历。(5)产生不同频率的波形,如MP3播放器。(6)产生不同脉宽的波形,如驱动伺服电机。(7)测量脉冲的个数,如测量转速。(8)测量脉冲的宽度,如测量频率。STM32F407相比于传统的51单片机要完善和复杂得多,它是专为工业控制应用量身定做,定时器有很多用途,包括基本定时功能、生成输出波形(比较输出、PWM和带死区插入的互补PWM)和测量输入信号的脉冲宽度(输入捕获)等。STM32F407微控制器共有14个定时器,包括2个基本定时器(TIM6和TIM7)、10个通用定时器(TIM2~TIM5和TIM9~TIM14)及2个高级定时器(TIM1和TIM8)、2个看门狗定时器和1个系统嘀嗒定时器(SysTick)。7.2STM32F4基本定时器下面讲述STM32基本定时器。STM32F407基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。TIM6和TIM7定时器的主要功能包括:(1)16位自动重装载累加计数器。(2)16位可编程(可实时修改)预分额器,用于对输入的时钟按系数为1~65536之间的任意数值分频。(3)触发DAC的同步电路。(4)在更新事件(计数器溢出)时产生中断/DMA请求。基本定时器内部结构如图7-1所示。7.2.1基本定时器介绍图7-1基本定时器结构框图下面讲述基本定时器的功能。1.时基单元STM32F407的基本定时器(如TIM6和TIM7)的时基单元是其核心组成部分,负责管理定时和计数功能。时基单元主要由以下几个关键部分构成:(1) 计数器寄存器(TIMx_CNT)这是一个16位的递增计数器,计数值范围为0到65535。当定时器被使能后(TIMx_CR1寄存器的CEN位置1),计数器根据输入的时钟信号(CK_CNT)递增。当计数器的值达到自动重载寄存器的值时,会产生一个计数器溢出事件(更新事件),这可能触发中断或DMA请求。7.2.2基本定时器的功能(2)预分频器寄存器(TIMx_PSC)这是一个16位的可编程预分频器,用于将输入时钟信号(CK_PSC)分频,得到计数器的实际计数时钟(CK_CNT)。分频系数范围为1到65536,实际系数是预分频器寄存器的值加1。通过调整预分频器的值,可以控制定时器的计数速度,从而影响溢出时间。(3)自动重载寄存器(TIMx_ARR)这是一个16位寄存器,用于存放与计数器比较的值。当计数器值与自动重载寄存器值相等时,会产生计数器溢出事件,并可能触发中断或DMA请求。自动重载寄存器具有预装载功能,其值可以在不停止计数的情况下更新,新值将在下一个更新事件时生效。2.时钟源STM32F407基本定时器TIM6和TIM7仅有一个内部时钟源CK_INT,来源于RCC的TIMxCLK,但各定时器TIMxCLK不同。基本定时器TIM6和TIM7的TIMxCLK由APB1预分频器输出,系统默认APB1时钟频率为72MHz。3.预分频器预分频器可将计数器时钟按1至65536之间的任意系数分频,通过16位寄存器TIMx_PSC实现。TIMx_PSC寄存器具缓冲功能,运行中可修改预分频值,且新值将在下一更新事件时生效。图7-2是在运行过程中改变预分频系数的例子,预分频系数从1变到2。图7-2预分频系数从1变到2的计数器时序图4.计数模式STM32F407基本定时器只有向上计数工作模式,其工作过程如图7-3所示,其中↑表示产生溢出事件。图7-3向上计数工作模式基本定时器工作时,脉冲计数器TIMx_CNT从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计数器溢出事件。由此可见,如果使用基本定时器进行延时,延时时间可以由以下公式计算:延时时间=(TIMx_ARR+1)(TIMx_PSC+1)/TIMxCLK当发生一次更新事件时,所有寄存器会被更新并设置更新标志:传送预装载值(TIMx_PSC寄存器的内容)至预分频器的缓冲区,自动重装载影子寄存器被更新为预装载值(TIMx_ARR)。以下是一些在TIMx_ARR=0x36时不同时钟频率下计数器工作的图示例子。图7-4内部时钟分频系数为1,图7-5内部时钟分频系数为2。图7-4计数器时序图(内部时钟分频系数为1)图7-5计数器时序图(内部时钟分频系数为2)现将STM32F407基本定时器相关寄存器名称介绍如下,可以用半字(16位)或字(32位)的方式操作这些外设寄存器,由于是采用库函数方式编程,故不作进一步的探讨。(1)TIM6和TIM7控制寄存器1(TIMx_CR1)。(2)TIM6和TIM7控制寄存器2(TIMx_CR2)。(3)TIM6和TIM7DMA/中断使能寄存器(TIMx_DIER)。(4)TIM6和TIM7状态寄存器(TIMx_SR)。(5)TIM6和TIM7事件产生寄存器(TIMx_EGR)。(6)TIM6和TIM7计数器(TIMx_CNT).(7)TIM6和TIM7预分频器(TIMx_PSC)。(8)TIM6和TIM7自动重装载寄存器(TIMx_ARR)。7.2.3STM32基本定时器的寄存器7.3STM32F4通用定时器下面讲述STM32通用定时器。7.3.1通用定时器介绍通用TIMx(TIM2、TIM3、TIM4和TIM5)定时器功能包括:(1)16位或32位向上、向下、向上/向下自动装载计数器。(2)16位或32位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值。(3)4个独立通道:①输入捕获。②输出比较。③PWM生成(边缘或中间对齐模式)。④单脉冲模式输出。(4)使用外部信号控制定时器和定时器互连的同步电路。(5)如下事件发生时产生中断/DMA:①更新,计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)。②触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)。③输入捕获。④输出比较。(6)支持针对定位的增量(正交)编码器和霍尔传感器电路。(7)触发输入作为外部时钟或者按周期的电流管理。通用定时器内部结构如图7-6所示。相比于基本定时器其内部结构要复杂得多,其中最显著的地方就是增加了4个捕获/比较寄存器TIMx_CCR,这也是通用定时器之所以拥有那么多强大功能的原因。7.3.2通用定时器的功能描述图7-6通用定时器内部结构框图1. 时基单元可编程通用定时器核心为16位计数器和自动装载寄存器,计数器可向上、下或双向计数,时钟经预分频器分频。自动装载寄存器预先装载,ARPE位控制内容传递时机;计数器溢出且UDIS为0时触发更新事件,可由软件产生。计数器由预分频器输出CK_CNT驱动,CEN使能后计数器生效;预分频寄存器16位,支持1~65536任意分频,缓冲机制更新参数。2. 计数模式TIM2~TIM5可以向上计数、向下计数、向上向下双向计数。(1)向上计数模式向上计数模式工作过程同基本定时器向上计数模式,工作过程如图7-4所示。对于一个工作在向上计数模式下的通用定时器,当自动重装载寄存器TIMx_ARR的值为0x36,内部预分频系数为4(预分频寄存器TIMx_PSC的值为3)的计数器时序图如图7-7所示。图7-7通用定时器的计数器时序图(内部时钟分频因子位4)(2)向下计数模式通用定时器向下计数模式工作过程如图7-8所示。图7-8通用定时器的向下计数工作模式对于一个工作在向下计数模式下的通用定时器,当自动重装载寄存器TIMx_ARR的值为0x36,内部预分频系数为2(预分频寄存器TIMx_PSC的值为1)的计数器时序图如图7-9所示。图7-9通用定时器计数器时序图(内部时钟分频因子位2(3)向上/向下计数模式向上/向下计数模式又称为中央对齐模式或双向计数模式,其工作过程如图7-10所示。计数器从0开始计数到自动加载的值(TIMx_ARR寄存器)−1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;然后再从0开始重新计数。图7-10向上/向下计数模式对于一个工作在向上/向下计数模式下的通用定时器,当自动重装载寄存器TIMx_ARR的值为0x06,内部预分频系数为1(预分频寄存器TIMx_PSC的值为0)的计数器时序图如图7-11所示。图7-11计数器时序图(内部时钟分频因子为1)3.时钟选择相比于基本定时器单一的内部时钟源,STM32F407通用定时器的16位计数器的时钟源有多种选择,可由以下时钟源提供。(1)内部时钟CK_INT来自RCCTIMxCLK,TIM2~TIM5通常为168MHz,源自APB1预分频器。(2)外部输入捕获引脚TIx计数,响应TI1FP1或TI2FP2的边沿信号。(3)外部触发输入引脚ETR计数,响应ETR上升或下降沿。(4)内部触发输入ITRx由其它定时器触发,支持定时器间联动预分频。4.捕获/比较通道每个捕获/比较通道围绕一个寄存器(含影子寄存器),输入部分含数字滤波、多路复用和预分频器。输入部分采样TIx信号,滤波生成TIxF,再通过极性选择边缘检测器产生TIxFPx信号。TIxFPx可触发模式控制或捕获控制,通过预分频进入捕获寄存器;输出部分生成中间波形OCxRef决定最终输出。下面讲述通用定时器的工作模式。1.输入捕获模式输入捕获模式下,检测到ICx边沿时计数值锁存到TIMx_CCRx寄存器,CCxIF标志置1。使能中断或DMA则触发响应,CCxIF已高时置CCxOF,写0可清除两个标志。7.3.3通用定时器的工作模式2.PWM输入模式该模式是输入捕获模式的一个特例,除下列区别外,操作与输入捕获模式相同:(1)2个ICx信号被映射至同一个TIx输入。(2)这2个ICx信号为边沿有效,但是极性相反。(3)其中一个TIxFP信号被作为触发输入信号,而从模式控制器被配置成复位模式。例如,需要测量输入到TI1上的PWM信号的长度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2寄存器)。3. 强置输出模式输出模式(CCxS=00)下,软件可直接强置OCxREF和OCx信号有效或无效,不依赖比较结果。OCxM=101强置OCxREF高电平,OCx极性为CCxP反向;OCxM=100强置OCxREF低电平,比较仍然生效。比较和标志更新继续,中断和DMA请求仍可产生,影子寄存器与计数器比较不受影响。4.输出比较模式此项功能是用来控制一个输出波形,或者指示一段给定的时间已经到时。当计数器与捕获/比较寄存器的内容相同时,输出比较功能做如下操作:(1)将输出比较模式(TIMx_CCMRx寄存器中的OCxM位)和输出极性(TIMx_CCER寄存器中的CCxP位)定义的值输出到对应的引脚上。(2)设置中断状态寄存器中的标志位(TIMx_SR寄存器中的CCxIF位)。(3)若设置了相应的中断屏蔽(TIMx_DIER寄存器中的CCxIE位),则产生一个中断,(4)若设置了相应的使能位(TIMx_DIER寄存器中的CCxDE位,TIMx_CR2寄存着中的CCDS位选择DMA请求功能),则产生一个DMA请求。5. PWM模式PWM输出模式是一种特殊的输出模式,在电力、电子和电机控制领域得到广泛应用。STM32F407就是这样一款具有PWM输出功能的微控制器,除了基本定时器TIM6和TIM7。其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,STM32最多可以同时产生30路PWM输出。STM32F407微控制器脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号,其产生原理如图7-12所示。图7-12STM32F407微控制器PWM产生原理通用定时器PWM输出模式的工作过程如下:①配置TIMx_CNT为向上计数,计数从0开始累加至TIMx_ARR预设值N,时钟为分频后的CK_CNT驱动。②脉冲计数X与捕获/比较寄存器TIMx_CCR预设值A比较,决定输出高电平或低电平。③计数器值大于TIMx_ARR的N时清零重新计数,PWM周期为(N+1)TCK_CNT,占空比为A/(N+1)。现将STM32F407通用定时器相关寄存器名称介绍如下,可以用半字(16位)或字(位)的方式操作这些外设寄存器,由于是采用库函数方式编程,故不做进一步的探讨。(1)控制寄存器1(TIMx_CR1)。(2)控制寄存器2(TIMx_CR2)。(3)从模式控制寄存器(TIMx_SMCR)。(4)DMA/中断使能寄存器(TIMx_DIER)。(5)状态寄存器(TIMx_SR)。(6)事件产生寄存器(TIMx_EGR)。(7)捕获/比较模式寄存器1(TIMx_CCMR1)。(8)捕获/比较模式寄存器2(TIMx_CCMR2)。7.3.4通用定时器的寄存器(9)捕获/比较使能寄存器(TIMx_CCER)。(10)计数器(TIMx_CNT)。(11)预分频器(TIMx_PSC)。(12)自动重装载寄存器(TIMx_ARR)。(13)捕获/比较寄存器1(TIMx_CCR1)。(14)捕获/比较寄存器2(TIMx_CCR2)。(15)捕获/比较寄存器3(TIMx_CCR3)。(16)捕获/比较寄存器4(TIMx_CCR4)。(17)DMA控制寄存器(TIMx_DCR)。(18)连续模式的DMA地址(TIMx_DMAR)。综上所述,与基本定时器相比,STM32F407通用定时器具有以下不同特性:(1)具有自动重装载功能的16位递增/递减计数器,其内部时钟CK_CNT的来源TIMxCLK来自APB1预分频器的输出。(2)具有4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM输入和输出以及单脉冲模式输出等。(3)在更新(向上溢出/向下溢出)、触发(计数器启动/停止)、输入捕获以及输出比较事件时,可产生中断/DMA请求。(4)支持针对定位的增量(正交)编码器和霍尔传感器电路。(5)使用外部信号控制定时器和定时器互连的同步电路。7.4STM32F4定时器HAL库函数基础定时器仅具定时功能,计数溢出产生UEV事件为中断源。OPM位设定决定连续或单次定时模式。(1)OPM=0时,为连续定时模式,计数器UEV事件后不断计数,产生连续周期定时中断。(2)OPM=1时,为单次定时模式,计数器UEV事件后停止计数,定时中断只产生一次。1.基础定时器主要函数表7-2是基础定时器的一些主要的HAL驱动函数,所有定时器具有定时功能,所以这些函数对于通用定时器、高级控制定时器也是适用的。7.4.1基础定时器HAL驱动程序表7-2基础定时器的一些主要的HAL驱动函数(1)定时器初始化函数HAL_TIM_Base_Init()对定时器的连续定时工作模式和参数进行初始化设置,其原型定义如下:HAL_StatusTypeDefHAL_TIM_Base_Init(TIM_HandleTypeDef*htim);其中,参数htim是定时器外设对象指针,是TIM_HandleTypeDef结构体类型指针,这个结构体类型的定义在文件stm32f4xx_hal_tim.h中,其定义如下,各成员变量的意义见注释。typedefstruct{TIM_Typedef*Instance;//定时器的寄存器基址TIM_Base_InitTypeDefInit;//定时器参数HAL_TIM_ActiveChannelChanne1;//当前通道DMA_HandleTypeDef*hdma[7];//DMA处理相关数组HAL_LockTypeDefLock;//是否锁定_IOHAL_TIM_StateTypeDefState;//定时器的工作状态}TIM_HandleTypeDef;其中,Instance是定时器的寄存器基址,用于表示具体是哪个定时器;Init是定时器的各种参数,是一个结构体类型TIM_Base_InitTypeDef。(2)配置为单次定时模式定时器默认工作于连续定时模式,如果要配置定时器工作于单次定时模式,在调用定时器初始化函数HAL_TIM_Base_Init()之后,还需要用函数HAL_TIM_OnePulse_Init()将定时器配置为单次模式。其原型定义如下:HAL_StatusTypeDefHAL_TIM_OnePulse_Init(TIM_HandleTypeDef*htim,uint32_tOnePulseMode)其中,参数htim是定时器对象指针,参数OnePulseMode是产生脉冲的方式,有两种宏定义常量可作为该参数的取值。(3)启动和停止定时器定时器有3种启动和停止方式,对应于表7-2中的3组函数。①轮询方式:HAL_TIM_Base_Start()启动,计数溢出标志需用户轮询查询,无中断触发。②中断方式:HAL_TIM_Base_Start_IT()启动,计数溢出时触发中断,常用处理方式。③DMA方式:HAL_TIM_Base_Start_DMA()启动,计数溢出后触发DMA请求进行数据传输。(4)获取定时器运行状态函数HAL_TIM_Base_GetState()用于获取定时器的运行状态,其原型定义如下:

HAL_TIM_StateTypeDefHAL_TIM_Base_GetState(TIM_HandleTypeDef*htim);函数返回值是枚举类型HAL_TIM_StateTypeDef,表示定时器的当前状态。这个枚举类型的定义如下,各枚举常量的意义见注释。typedefenum{HAL_TIM_STATE_RESET=0x00U,/*定时器还未被初始化,或被禁用了*/HAL_TIM_STATE_READY=0x01U,/*定时器已经初始化,可以使用了*/HAL_TIM_STATE_BUSY=0x02U,/*一个内部处理过程正在执行*/HAL_TIM_STATE_TIMEOUT=0x03U,/*定时到期(Timeout)状态*/HAL_TIM_STATE_ERROR=0x04U/*发生错误,Reception过程正在运行*/}HAL_TIM_StateTypeDef;2.其他通用操作函数文件stm32f4xx_hal_tim.h还定义了定时器操作的一些通用函数。这些函数都是宏函数,直接操作寄存器,所以主要用于在定时器运行时直接读取或修改某些寄存器的值,如修改定时周期、重新设置预分频系数等,如表7-3所示。表7-3定时器操作部分通用函数4. 中断处理定时器中断处理相关函数如表7-4所示,这些函数对所有定时器都是适用的。表7-4定时器中断处理相关函数每个定时器都只有一个中断号,也就是只有一个ISR。基础定时器只有一个中断事件源,即UEV事件,但是通用定时器和高级控制定时器有多个中断事件源。在定时器的HAL驱动程序中,每一种中断事件对应一个回调函数,HAL驱动程序会自动判断中断事件源,清除中断事件挂起标志,然后调用相应的回调函数。每一种外设的HAL驱动程序头文件中都定义了一些以“_HAL”开头的宏函数,这些宏函数直接操作寄存器,几乎每一种外设都有表7-5中的宏函数。7.4.2外设的中断处理概念小结表7-5一般外设都定义的宏函数及其作用7.5采用STM32CubeMX和HAL库的定时器应用实例通用定时器具有多种功能,但其原理大致相同,但其流程有所区别,以使用中断方式为例,主要包括三部分,即NVIC设置、TIM中断配置、定时器中断服务程序。对每个步骤通过库函数的实现方式描述。首先要提到是,定时器相关的库函数主要中在HAL库文件stm32f4xx_hal_tim.h和stm32f4xx_hal_tim.c文件中。7.5.1STM32F4的通用定时器配置流程定时器配置步骤如下:(1)TIM3时钟使能。HAL中定时器使能是通过宏定义标识符实现对相关寄存器操作的,方法如下:__HAL_RCC_TIM3_CLK_ENABLE();//使能TIM3时钟(2)初始化定时器参数,设置自动重装值,分频系数,计数方式等。在HAL库中,定时器的初始化参数是通过定时器初始化函数HAL_TIM_Base_Init实现的:HAL_StatusTypeDefHAL_TIM_Base_Init(TIM_HandleTypeDef*htim);该函数只有一个入口参数,就是TIM_HandleTypeDef类型结构体指针,结构体类型为下面看看这个结构体的定义:typedefstruct{TIM_TypeDef *Instance;TIM_Base_InitTypeDef Init;HAL_TIM_ActiveChannel Channel;DMA_HandleTypeDef *hdma[7];HAL_LockTypeDef Lock;__IOHAL_TIM_StateTypeDef State;}TIM_HandleTypeDef;第1个参数Instance是寄存器基地址。第2个参数Init为真正的初始化结构体TIM_Base_InitTypeDef类型。第3个参数Channel用来设置活跃通道。每个定时器最多有四个通道可以用来做输出比较,输入捕获等功能之用。这里的Channel就是用来设置活跃通道的,取值范围为:HAL_TIM_ACTIVE_CHANNEL_1~HAL_TIM_ACTIVE_CHANNEL_4。第4个hdma是定时器的DMA功能时用到,为了简单起见,暂时不讲解。第5个参数Lock和State,是状态过程标识符,是HAL库用来记录和标志定时器处理过程。(3)使能定时器更新中断,使能定时器。(4)TIM3中断优先级设置。(5)编写中断服务函数。本实例利用基本定时器TIM6/7定时0.5s,0.5s时间到LED翻转一次。基本定时器是单片机内部的资源,没有外部IO,不需要接外部电路,只需要一个LED灯即可。7.5.2STM32F4的定时器应用的硬件设计在HAL库函数头文件stm32f4xx_hal_tim.h中对定时器外设建立了四个初始化结构体,基本定时器只用到其中一个即TIM_TimeBaseInitTypeDef,其实现如下:typedefstruct{uint32_tPrescaler;//预分频器uint32_tCounterMode;//计数模式uint32_tPeriod;//定时器周期uint32_tClockDivision;//时钟分频uint32_tRepetitionCounter;//重复计算器uint32_tAutoReloadPreload;//自动预装载}TIM_TimeBaseInitTypeDef;7.5.3STM32F4的定时器应用的软件设计这些结构体成员说明如下,其中括号{}内的文字是对应参数在STM32HAL库中定义的宏:(1)Prescaler为定时器预分频器,设置TIMx_PSC,范围0-65535,分频因子1-65536。(2)CounterMode定义计数方式,基础定时器仅支持向上计数,从0递增,无需初始化。(3)Period为定时器周期,设置自动重载值0-65535,更新到影子寄存器。(4)ClockDivision定义时钟分频,基础定时器无此功能,无需设置。(5)RepetitionCounter用于高级寄存器控制PWM次数,基础定时器不需设置。(6)AutoReloadPreload确保Period修改在计数周期结束才更新,通常不设置。1. 通过STM32CubeMX新建工程通过STM32CubeMX新建工程的步骤如下:(1)新建文件夹

Demo目录下新建文件夹TIMER,这是保存本章新建工程的文件夹。(2)新建STM32CubeMX工程在STM32CubeMX开发环境中新建工程。(3)选择MCU或开发板CommercialPartNumber和MCUs/MPUsList选择STM32F407ZGT6,选择StartProject启动工程。(4)保存STM32CubeMX工程使用STM32CubeMX菜单File→SaveProject,保存工程。(5)生成报告使用STM32CubeMX菜单File→GenerateReport生成当前工程的报告文件。(6)配置MCU时钟树(7)配置MCU外设GPIO引脚配置具体步骤如下。STM32CubeMXPinout&Configuration子页面下选择SystemCore→GPIO,对使用的GPIO口进行设置。LED输出端口:LED1_RED(PF6)、LED2_GREEN(PF7)和LED3_BLUE(PF8)。配置完成后的GPIO端口页面如图7-14所示。图7-14配置

温馨提示

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

评论

0/150

提交评论