久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3211|回復: 0
打印 上一主題 下一主題
收起左側

利用STM32 TIM2_CH2進行PWM輸入捕獲時,不斷進入TIM2_IRQHandler中斷

[復制鏈接]
跳轉到指定樓層
樓主
ID:396694 發表于 2019-10-16 09:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
利用TIM2_CH2(端口PA1,stm32f407開發板)進行PWM輸入捕獲時,不斷進入TIM2_IRQHandler中斷,請各位專家幫忙分析分析
1、TIM2_CH2的有個設置如下:

void TIM2_Configuration(void)
{
TIM_ICInitTypeDef TIM_ICInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);   //TIM2時鐘使能   
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);  //使能PORTA時鐘  

GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_TIM2); //PA1
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;           //GPIOA1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //復用功能
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽復用輸出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//GPIO_PuPd_UP;        //上拉
GPIO_Init(GPIOA,&GPIO_InitStructure);              //初始化PA1

TIM_TimeBaseStruct.TIM_Period=0xFFFFFFFF;
TIM_TimeBaseStruct.TIM_Prescaler=0;
TIM_TimeBaseStruct.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStruct);

TIM_ICInitStructure.TIM_Channel=TIM_Channel_2;//選擇TIM2_CH2,選擇輸入端IC2映射到TI2上
TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;//上升沿捕獲
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;//映射到TI2上(TIM2映射至IC2--tuhongmao)
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;//在捕獲輸入上每探測到一個邊沿就執行一次捕獲
TIM_ICInitStructure.TIM_ICFilter=0;//濾波設置,經歷幾個周期跳變認定波形穩定
//(采樣高電平,只有連續采集到N個電平是高電平才認為是有效的,否則低于N個時認為是無效的N取0x0-0xF)
TIM_PWMIConfig(TIM2,&TIM_ICInitStructure);//以上是輸入捕獲設置
TIM_SelectInputTrigger(TIM2,TIM_TS_TI2FP2);//選擇濾波后的TI2FP2輸入作為觸發源,觸發下面程序的復位
TIM_SelectSlaveMode(TIM2,TIM_SlaveMode_Reset);//從模式控制器被設置為復位模式-選中的觸發信號上升沿重新
//初始化計數器并產生一個更新信號(上升沿一到,TIM2->CNT被清零,每次上升沿來到,CNT都會被清零)
//從控制器默認的通道是否為TIM2_CH1   tuhongmao 20191015
TIM_SelectMasterSlaveMode(TIM2,TIM_MasterSlaveMode_Enable);//啟動定時器的被動觸發
TIM_ITConfig(TIM2,TIM_IT_CC2,ENABLE);//捕獲中斷打開
TIM_ClearFlag(TIM2,TIM_IT_CC2);//清除標志位
TIM_Cmd(TIM2,ENABLE);//使能定時器2
}


2、中斷設置與處理函數如下:
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

//中斷處理程序
void TIM2_IRQHandler(void)
{
static u16 count=0;
if(TIM_GetITStatus(TIM2,TIM_IT_CC2)!= RESET)
{
  float IC2Value=0;
  float DutyCycle=0;
  float Frequency=0;
  float pulse=0;
  TIM_ClearITPendingBit(TIM2,TIM_IT_CC2);
  IC2Value=(float)TIM_GetCapture2(TIM2);//獲取CCR2的值
  pulse=(float)TIM_GetCapture1(TIM2);//獲得CCR1的值
  if(IC2Value !=0)
  {
   DutyCycle=pulse/IC2Value;
   Frequency=(float)84000000/IC2Value;
   duty=(u32)(DutyCycle*(u32)100);
   freq=Frequency/((float)1000);
   count++;
   if(count>=10000)
   {
    count=0;
    printf("IC2Value is %f \r\n",IC2Value);
    printf("pulse is %f \r\n",pulse);
   }
  }
  else
  {
   duty=0;
   freq=0;
  }

}
}

3、主程序Main.c如下:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
delay_init(168);  //初始化延時函數
uart_init(115200);//初始化串口波特率為115200
TIM2_Configuration();
NVIC_Configuration();
while(1)
{
}
}
4、串口打印結果如下:
IC2Value is 2.000000
pulse is 1.000000
IC2Value is 2.000000
pulse is 0.000000
IC2Value is 2.000000
pulse is 0.000000
IC2Value is 2.000000
pulse is 1.000000
IC2Value is 2.000000
pulse is 1.000000
IC2Value is 2.000000
pulse is 1.000000
IC2Value is 2.000000
pulse is 1.000000
IC2Value is 2.000000
...

(每進入10000次中斷,再串口打印消息)

其他未做任何設置,端口也沒有輸入PWM信號,但是不斷進入
TIM2_IRQHandler中斷,請幫忙分析分析。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久国产精品 | 亚洲精品久久久久久一区二区 | 久久91av| 国产精品免费看 | 亚洲国产精品一区二区三区 | 日韩在线免费视频 | 黄色一级大片在线免费看产 | 97视频在线观看免费 | 最新中文字幕一区 | 精品在线观看入口 | 午夜久久 | 国产999精品久久久久久 | 国产在线a| 在线欧美小视频 | 给我免费的视频在线观看 | 久久亚洲综合 | 日韩成人免费中文字幕 | 亚洲风情在线观看 | 3级毛片 | 国产伦精品一区二区三区照片91 | 国产精品视频 | 国产一区二区小视频 | 天天综合网天天综合 | 亚洲一区国产精品 | 精产国产伦理一二三区 | 在线观看中文字幕dvd播放 | 成人在线观看免费视频 | 国产视频精品免费 | 国产精品亚洲精品 | 日韩中文字幕网 | 午夜电影福利 | 国产一区二区麻豆 | 一区二区三区影院 | 日日操操操 | 欧美日韩一 | 亚洲精品1 | 99成人| 日韩欧美二区 | 综合激情网| 久久免费视频在线 | 亚洲精品久久久久久国产精华液 |