項目需求:利用PWM產生加熱信號,需要在PWM低信號時采集AD值
代碼實現部分:
#define heat_det1_open GPIO_SetBits(GPIOB,GPIO_Pin_12) //引腳PB12打開
#define heat_det1_close GPIO_ResetBits(GPIOB,GPIO_Pin_12) //引腳PB12關閉
#define heat_det2_open GPIO_SetBits(GPIOB,GPIO_Pin_13) //引腳PB13打開
#define heat_det2_close GPIO_ResetBits(GPIOB,GPIO_Pin_13) //引腳PB13關閉
/******************************************************************************
* 負 責 人 : ***
* 函數功能 :控制PB12,PB13開啟與關閉進行采集
******************************************************************************/
void heat_std_en()
{
heat_det1_open;
heat_det2_open;
}
void heat_std_disen()
{
heat_det1_close;
heat_det2_close;
}
/******************************************************************************
* 負 責 人 : ***
******************************************************************************/
double get_Pt_res()
{
heat_std_en(); //使能det1與det2
delay_us(5300); //防電壓抖動延時
get_val.ad1 = pm_get_adc(AD1Chn);
delay_us(50);
get_val.ad2 = pm_get_adc(AD2Chn);
delay_us(50);
get_val.ad3 = pm_get_adc(AD3Chn);
delay_us(50);
測試發現,這里牽扯到一個問題,底層的函數調用和上層邏輯代碼互用,而且存在 一個誤區,ad采集的時間與ad采樣以及時間延時的時間誤差,加上本身跑的是裸機跑的系統,系統函數 調用過程產生的時間差導致函數在ad采集過程中達不到想要的采集效果,雙線程同樣給存在調度問題,因此雙線程(1個產生PWM,1個用來檢測引腳高低電平采集)這種方法在調度上和時間上存在誤差。
解決方案:
重新開啟一個定時器,在PWM開啟時同時是開啟,在PWM的低電平通過定時器的時間開始采集AD即可。
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
PWM
+關注
關注
114文章
5204瀏覽量
215230 -
AD
+關注
關注
27文章
870瀏覽量
150663 -
函數
+關注
關注
3文章
4350瀏覽量
63096
發布評論請先 登錄
相關推薦
CAN發送的底層邏輯:CANwrite函數機制介紹
這個系列是全新的系列,整個系列會通過實際操作,調試實際的代碼,以CAN為例,完整的解析AUTOSAR的從底層MCAL 到COM等上層模塊的通信鏈路層。重點講述數據的流向,以及各個模塊的作用,配置方法。

為什么底層函數里面有7個呢?
《STM32中文參考手冊》P350說到BWTR寄存器只有四個,為什么底層函數里面有7個呢?如下: SRAM/NOR閃存寫時序寄存器 1…4 (FSMC_BWTR1…4) 地址偏移:0xA000
發表于 06-21 04:01
淺析回調函數
回調用于層間協作,上層將本層函數安裝在下層,這個函數就是回調,而下層在一定條件下觸發回調,例如作為一個驅動,是一個底層,他在收到一個數據時,除了完成本層的處理工作外,還將進行回調,將這
發表于 08-06 06:10
為什么不能將新舊電池、不同型號電池混用?
為什么不能將新舊電池、不同型號電池混用? 因為舊電池能量低,電量少,而新電池則能量高,電量多,當它們混用時,不但
發表于 10-28 15:32
?6740次閱讀
驅動之路-設備模型之上層模型
底層模型決定上層模型,在總線,設備,驅動的結構體中你總是可以看到它們間接或者直接的包含了kobject結構或kset結構。
發表于 05-15 17:04
?676次閱讀

手機充電器可以混用嗎
手機的充電器是可以混用的,生產廠家在這一點上面也會考慮到,因為都是USB接口,即使不是有意的,也是很容易出現混用的。雖然手機充電器的標準接口都是USB,但是在混用時,有可能達不到手機原本的充電速度或者是電流。
發表于 04-04 16:37
?2.7w次閱讀
評論