首页 stm32中断产生ev1527编码(1)

stm32中断产生ev1527编码(1)

举报
开通vip

stm32中断产生ev1527编码(1)stm32中断产生ev1527编码利用tim3生成ev1527编码(270K,1200us)TIM3_PWM_Init(1199,71);   //分频后1us,窄脉冲4LCK,宽脉冲12LCK,脉冲周期16LCK;同步周期128LCK(4LCK脉冲,124LCK空白);待生成脉冲周期为1200us//通过改变TIM3->CCR2的值来改变占空比#defineLED0_PWM_DUTYTIM3->CCR2#define PULSE_CODE  0xD2F672unsignedintpulse_count=0;voi...

stm32中断产生ev1527编码(1)
stm32中断产生ev1527编码利用tim3生成ev1527编码(270K,1200us)TIM3_PWM_Init(1199,71);   //分频后1us,窄脉冲4LCK,宽脉冲12LCK,脉冲周期16LCK;同步周期128LCK(4LCK脉冲,124LCK空白);待生成脉冲周期为1200us//通过改变TIM3->CCR2的值来改变占空比#defineLED0_PWM_DUTYTIM3->CCR2#define PULSE_CODE  0xD2F672unsignedintpulse_count=0;voidTIM3_PWM_Init(u16arr,u16psc){          GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //①使能定时器3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO,ENABLE);      //①使能GPIO和AFIO复用功能时钟GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);//②重映射TIM3_CH2->PB5  //设置该引脚为复用输出功能,输出TIM3CH2的PWM脉冲波形GPIOB.5GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;      //TIM_CH2GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;  //复用推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);        //①初始化GPIO//初始化TIM3TIM_TimeBaseStructure.TIM_Period=arr;      //设置在自动重装载周期值TIM_TimeBaseStructure.TIM_Prescaler=psc;     //设置预分频值TIM_TimeBaseStructure.TIM_ClockDivision=0;//设置时钟分割:TDTS=Tck_timTIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上计数模式TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //③初始化TIMx//初始化TIM3Channel2PWM模式 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;  //选择PWM模式1TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; //输出极性高TIM_OCInitStructure.TIM_Pulse  =1200;  TIM_OC2Init(TIM3,&TIM_OCInitStructure);        //④初始化外设TIM3OC2TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable); //使能预装载寄存器NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;  NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;     NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;       NVIC_Init(&NVIC_InitStructure);TIM_ClearFlag(TIM3,TIM_IT_Update);TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);TIM_Cmd(TIM3,ENABLE);             //⑤使能TIM3} voidTIM3_IRQHandler(void){if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET){TIM_ClearITPendingBit(TIM3,TIM_IT_Update);if(pulse_count<24) //编码部分{if(PULSE_CODE&(1<<(23-pulse_count)))//按位判断PULSE_CODE的二进制从前面开始,如果当前位==1,宽脉冲900,==,窄脉冲300{LED0_PWM_DUTY=900;pulse_count;}else{LED0_PWM_DUTY=300;pulse_count;}}elseif(pulse_count==24)//同步头{LED0_PWM_DUTY=300;pulse_count;}elseif(pulse_count<31)//同步低电平部分{LED0_PWM_DUTY=0;pulse_count;}else{LED0_PWM_DUTY=0;pulse_count=0;}}}
本文档为【stm32中断产生ev1527编码(1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_654168
暂无简介~
格式:doc
大小:18KB
软件:Word
页数:7
分类:
上传时间:2022-08-05
浏览量:15