標題: stm32中斷產生ev1527編碼 [打印本頁]
作者: mylayout 時間: 2019-7-10 14:13
標題: stm32中斷產生ev1527編碼
利用tim3生成ev1527編碼(270K,1200us)
TIM3_PWM_Init(1199,71); //分頻后1us,窄脈沖4LCK,寬脈沖12LCK,脈沖周期16LCK;同步周期128LCK(4LCK脈沖,124LCK空白);待生成脈沖周期為1200us
//通過改變TIM3->CCR2的值來改變占空比
#define LED0_PWM_DUTY TIM3->CCR2
#define PULSE_CODE 0xD2F672
unsigned int pulse_count=0;
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
NVIC_InitTypeDef NVIC_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
//設置該引腳為復用輸出功能,輸出 TIM3 CH2的 PWM 脈沖波形 GPIOB.5
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5; //TIM_CH2
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP; //復用推挽輸出
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure); //①初始化 GPIO
//初始化 TIM3
TIM_TimeBaseStructure.TIM_Period =arr; //設置在自動重裝載周期值
TIM_TimeBaseStructure.TIM_Prescaler=psc; //設置預分頻值
TIM_TimeBaseStructure.TIM_ClockDivision =0; //設置時鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; //TIM 向上計數模式
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //③初始化 TIMx
//初始化 TIM3 Channel2 PWM模式
TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1; //選擇 PWM 模式 1
TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; //比較輸出使能
TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High; //輸出極性高
TIM_OCInitStructure.TIM_Pulse = 1200;
TIM_OC2Init(TIM3,&TIM_OCInitStructure); //④初始化外設 TIM3 OC2
TIM_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
}
void TIM3_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;
}
}
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
国产在线麻豆精品入口
|
懂色一区二区三区免费观看
|
欧美三区|
999久久久久久久久6666
|
国产精品一区二区免费看
|
综合一区
|
国产一级免费在线观看
|
久久久久久久久久久久久久av
|
成人免费在线播放视频
|
久久精品亚洲成在人线av网址
|
97人人澡人人爽91综合色
|
99精品视频在线观看免费播放
|
一区二区在线
|
国产欧美在线播放
|
免费视频中文字幕
|
国产精品视频一区二区三区四蜜臂
|
欧美一区二区大片
|
www亚洲一区
|
一区二区三区在线
|
狠狠爱综合
|
日韩在线一区二区
|
亚洲欧美日韩在线一区二区
|
亚洲一区二区av
|
www四虎com
|
天天拍天天操
|
三级国产三级在线
|
亚洲国产一区二区三区在线观看
|
国产日韩欧美一区二区在线播放
|
成人性生交大片免费看中文带字幕
|
中文字幕在线一区二区三区
|
欧美三级成人理伦
|
97在线观视频免费观看
|
嫩草影院黄
|
欧美日韩一区二区在线观看
|
99久久精品国产麻豆演员表
|
国产乱码精品1区2区3区
|
www久久久|
国产www成人|
国产亚洲精品精品国产亚洲综合
|
亚洲狠狠
|
国产成人午夜电影网
|