日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

S32K--输入捕获(FTM_IC)配置与使用学习笔记(SDK3.0)

發布時間:2023/12/16 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 S32K--输入捕获(FTM_IC)配置与使用学习笔记(SDK3.0) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 使用NXP S32K148EVB的官方開發板,UART1引腳RX-PTC6 TX-PTC7。

ProcessorExpert配置

I/O配置

選擇FTM0 0通道 PTD15設置為輸入 用以采集PWM頻率及占空比

?

添加FTM模塊

?選中FTM_IC右鍵添加模塊

?

配置PTM_IC采集頻率

選擇PTM0 通道0 模式為測量模式

?

配置FTM_IC 采集占空比

FTM0 通道0 邊沿采集模式 雙邊沿采集

補全代碼

生成/補全代碼

?

頻率采集代碼: FTM_DRV_Init(INST_FLEXTIMER_IC1, &flexTimer_ic1_InitConfig, &ftm1StateStruct); FTM_DRV_InitInputCapture(INST_FLEXTIMER_IC1, &flexTimer_ic1_InputCaptureConfig); FTMIC_frequency = FTM_DRV_GetFrequency(INST_FLEXTIMER_IC1); /* Get values */ inputCaptureMeas = FTM_DRV_GetInputCaptureMeasurement(INST_FLEXTIMER_IC1, 0U); /* Calculate the signal frequency using recorded data*/ inputCaptureMeas = FTMIC_frequency / (inputCaptureMeas); //最終計算所得頻率=時鐘頻率/脈沖一周期起振次數占空比采集代碼: flexTimer_ic1_InputCaptureChannelConfig[0].channelsCallbacks = channelsCallbacks_0;//檢測到邊沿跳變執行次回調函數FTM_DRV_Init(INST_FLEXTIMER_IC1, &flexTimer_ic1_InitConfig, &ftm1StateStruct); FTM_DRV_InitInputCapture(INST_FLEXTIMER_IC1, &flexTimer_ic1_InputCaptureConfig); FTMIC_frequency = FTM_DRV_GetFrequency(INST_FLEXTIMER_IC1);void channelsCallbacks_0(ic_event_t event, void *userData) {static uint16_t GetCNVBuff[3];uint16_t CalculationResut1,CalculationResut2;uint32_t Pinstate;Pinstate = (PINS_DRV_ReadPins(PTD)>>15)&0x01; //讀取輸入引腳狀態/* 取三個跳變沿時間點 (三個跳變沿 PWM為一周期)*/GetCNVBuff[0] = GetCNVBuff[1]; GetCNVBuff[1] = GetCNVBuff[2]; GetCNVBuff[2] = FTM_DRV_GetInputCaptureMeasurement(INST_FLEXTIMER_IC1, 0U);//讀取C(n)V寄存器計數CalculationResut1 = GetCNVBuff[1]-GetCNVBuff[0]; //取兩個相鄰跳變沿之間的時間計數差值CalculationResut2 = GetCNVBuff[2]-GetCNVBuff[1]; //同上if(Pinstate) //由于不知道兩個跳變之間是高電平還是低電平 故判斷PWM當前狀態 計算占空比{Duty_cycle = (uint16_t)(((CalculationResut1*100)/(CalculationResut1 + CalculationResut2)));}else{Duty_cycle = (uint16_t)(((CalculationResut2*100)/(CalculationResut1 + CalculationResut2)));} }

?


?

————————————————————————————————————————————

小學生一枚,在此做個學習筆記,有什么不妥的地方還請海涵。

總結

以上是生活随笔為你收集整理的S32K--输入捕获(FTM_IC)配置与使用学习笔记(SDK3.0)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。