《定时器初始化程序参考.docx》由会员分享,可在线阅读,更多相关《定时器初始化程序参考.docx(8页珍藏版)》请在第壹文秘上搜索。
1、使用GP1.O时,按如下步骤:(1)开启GPIO时钟:(2)配置GPIO工作模式;(3)使用GPIO口进行输入或输出。intmain(void)GP1.C1.Ini1.TypeDefGP1.OJnits1.ruc1.ure;声明用于GPIO初始化的结构体变量RCC.APB2PeriphC1.ockCmd(RCC_APB2Periph_GPIOA,ENAB1.E)力使能GPIOA时钟GP1.Oniisiructure.GPIO_Pin=GP1.e1.Pin_O;设置引脚;对PAo引脚进行设置GPIOniisiruc1.ure.GPIO_Mode=GPIO_Mode_oui_PP;设置工作模式;选
2、择推挽输出模式Gpiojnitstructure.GPIO-Speed=GCP1.o_Speed_50MHZ0设置输出速率:输出频率最高为50MHZGP1.Onit(GPIOA,&GPIOJnitsiructure)/使用结构体成员的值对GPIOA进行初始化whi1.e(1.)GPIO_SetBits(GPIOA.GP1.O_Pin_o)/GPIOA.0号引脚输出高电平GPIO_WriteBit(GP1.oA,GPIO_Pin_o,(BitaCtiOn)I用GPIO.writeBit函数来输出高电平,将数值1强制转换为BitAction类型。/GPIC1.writeBit(GP1.oA,GPI
3、O_Pin_0,Bi1.SET);用GPIOwriteBit函数来输出高电平DeIay_ms(5(X);GPIO.ResetBits(GPIOA,GPIO_Pin_0)/GPIOA.O号引脚输出低电平/GPIC1.writeBit(GPIOA,GPIO_Pin_o,(BitAC1.iOn)0);用cPIo.writeBit函数来输出高电平,“将数值O强制转换为BitAction类型。/GPIO_writeBit(GPIOA.GPIO_Pin_O.BitRESET);用GPIOwriteBit函数来输出高电平de1.ay_ms(500);)以上代码为使用GP1.OA的0号端口驱动1.ED,每隔0
4、.5s翻转一次1.ED的状态。掌握每一条语句的功能。能够使用GP1.e1.SeIBitS/GPIC1.ResetBits来替换GPIO_WriteBit;或用GPIO_WriteBit来替换GP1.o_SeIBitS/GPIC1.ResetBits1、定时器初始化程序参考如下:voidTIMER2Jnit(void)T1.N1.TimeBaSeInitTypeDefTIM_TiIneBasestructure;RCC_APB1PeriphC1.ockCmd(RCC.APBIPeriph.TIM2,ENAB1.E);T1.Mjntema1.CIockConfig(TIM2);TIM_TimeBa
5、sestructure.TIM_Period=50000-1;/ARR的值TIM_TimeBasestructure.TIM_Presca1.er=7200-1;TIM_TimeBasestruc1.ure.TIM_counterMode=T1.M_CounterMode_up:I/11J上计数模式TIM_TimeBaseInit(TIM2.&TIM_TimeBasestructure);TIMJTConfig(TIM2,TIM_IT_Update,ENAB1.E);T1.N1.Cmd(T1.M2,ENAB1.E);开启时钟计数器使能)2、定时器中断系统的初始化程序:voidNVIC_conf
6、ig(void)NVIC_1.nitTypeDefNVIC_Initstructure:Nv1.C-Priori1.yGroupConfig(NVIC_Priori【yGroup_0);配置中断优先级分NV1.CjnitstructureNVICJRQChanneI=TIM2RQnw指定中断源NVIC_Initstructure.NVIC_IRQChanne1.PreemptionPriority=0;指定抢占式优先级别NV1.Cnitstructure.NVICJRQChanne1.SubPriority=o;/指定副优先级别Nvic-Initstructure,NVIC-IRQChanne
7、1.CnKi=ENAB1.E;NVIC_Ini1.(&NVIC_1.nitstructure);3、定时器中断服务函数u8turn=2;voidTIM2_IRQHand1.er(void)if(TIM_Ge1.ITs1.atus(TIM2,T1.MT_Update)=SET)T1.M-C1.earITPendingBit(TIM2,TIMJn1.UPdate)Xurn+;switch(tu11)CaSe:1.ED-1.oopShift(GPIoB,0,1):break;case(2):1.ED_1.oopShift(GPIOB,0,3);break;case(3):IUm=0;GPIo_WEe
8、(GPIOBQxFE)Ibreak;defau1.t:break;)4,用定时器来代替de1.ay函数,控制1.ED的亮灭翻转u8turn=O;TFIag=1;whi1.e(1)if(TF1.ag=1.)TFIag=O;turn=1-turn;if(turn)GPIO_SetBits(GPIOA,GPIO_Pin_0);e1.seGPIO_ResetBits(GPIOA.GPIO_Pin_0);)5、利用串口接收到的数据内容来控制1.ED的亮灭。voidUSARTIJRQHand1.er(void)u8recdata;if(USART-GetITStatus(USART1.,USARTT_RX
9、NE)!=RESET)USART-C1.earITPendingBiKUSART1.,USARTT_RXNE);:青除接!攵中断挂起标志reddata=USART-ReceiveData(USART1.);USART-sendData(USART1,recdata+()x2);recdata变量来控制1.ED亮灭。替换whi1.e(1)if(recdata=1)GPIO_setBits(GPIOA.GPIo_Pin_0);e1.seif(recdata=O)GPIOResetBits(GPTO/,GP1.O_Pin_O);6、计算机基本结构由处理器(CPU)、存储器、输入/输出接口(I/O接口
10、)及外部设备等组成,其中最核心的部件是处理器(CPU)37、计算机两种结构:冯诺依熨和哈佛结构。冯诺依空中,数据和程序都存储再存储器中,均采用数据总线进行传输;哈佛结构,数据和程序使用各自独立的存储器,采用数据总线和指令总线分别进行传输。STM32采用哈佛结构。8、Cortex-M3内核由ARM公司开发,基于哈佛结构的三级流水线,内部数据总线、寄存器和存储湍都是32位。采用ARMV7-M架构,支持Thumb指令和Thumb-2指令,不支持ARM指令。9、NVIC(向量中断控制器),内核自带。主要功能有:配置中断优先级分组,配置优先级值,配置中断总使能开关。10、系统滴答定时器(SyStiCk)
11、,内核自带的24位倒计时计数器,常用于操作系统。11、总线结构:I-Code(指令总线)、D-coie(数据总线)、AHB(系统总线)、APB(外设总线,包括APB1.(低速外设总线)和APB2(高速外设总线)12、通过位带操作,用户可以使用普通的加载/存储指令对单一的位进行读写。13、STM32F1产品系统架构:总线,DMA通道,外设(APB2和APBI上各F1.挂载的常用外设)14、STM32F1O3ZET6的时钟树:用户可通过多个预分频器配置AHB.高速APB(APB2)、低速APB(APB1.)的频率。固件库系统时钟配置流程(外部高速时钟晶振8MHz,经P1.1.9倍频,获得72MHZ
12、的系统时钟)15、变量编码规则:功能状态类型(FUnCtiOnaIStaIeIype)的可能值为ENAB1.E或D1SB1.Eo16、STM32F1最多有7组GPIO,每16个端口为一组,分别为PA、PB、PC、PD、PE、PF、PG。(如PA.0-P.15表示GPIOA的0-15号端口)17、GP1.o功能:(1)普通I/O:八种模式。所有GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时,它们可以被激活也可以被断开。(2)单独的位设置或位清除。在单次APB2写操作中,可以只更改一个或多个位。这是通过对“置位/第位寄存器”(GP1.OX_BSRR),或位清除寄存器(GPIOx_BRR)中想
13、要更改的位写1来实现的。没被选择的位将不被更改。(3)外部中断/唤醒线。所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。18、GPIO库函数:RCC外设主要固件库函数RCC.APB2PeriphC1.ockCmd();挂载在APB2总线上外设的时钟使能使能GPIO外设主要固件库函数GPIOnit()根据初始化结构体来自定义初始化引脚GPIO-SetBitsOGPIO-ResetBitsO设置/复位在输出模式下使用的引脚电平。GPIe1.Wri1.eBitO将数据写入指定的GPIO数据端口。19、DMA控制器STM32的两个DMA控制器有12个通道(DMA控制器1有7个道道,DMA控制器2有5个通道),每个通道专门用来管理来自一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。DMA模块主要特征:1、每个通道都有3个事件标志(DMA半传输,DMA传输完成、DMA传输出错)。2、每个通道都支持存储器和存储器间的传输。3、可编程的数据传输最大数目为65535。20、DMA处理发生一个事件后,外设向DMA控制器发送一个请求信号。DMA控制器根据通道的优先权处理请求。