0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

底層與上層函數(shù)的混用存在的問題

嵌入式應(yīng)用開發(fā) ? 來源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-08-18 12:00 ? 次閱讀

項目需求:利用PWM產(chǎn)生加熱信號,需要在PWM低信號時采集AD

代碼實現(xiàn)部分:

#define heat_det1_open GPIO_SetBits(GPIOB,GPIO_Pin_12)     //引腳PB12打開
#define heat_det1_close GPIO_ResetBits(GPIOB,GPIO_Pin_12)     //引腳PB12關(guān)閉
#define heat_det2_open GPIO_SetBits(GPIOB,GPIO_Pin_13)   //引腳PB13打開
#define heat_det2_close GPIO_ResetBits(GPIOB,GPIO_Pin_13)  //引腳PB13關(guān)閉
/******************************************************************************
* 負 責(zé) 人 : ***

* 函數(shù)功能 :控制PB12,PB13開啟與關(guān)閉進行采集

******************************************************************************/
void heat_std_en()
{
    heat_det1_open;
    heat_det2_open;
}
void heat_std_disen()
{
    heat_det1_close;
    heat_det2_close;
}
/******************************************************************************
* 負 責(zé) 人 : ***


******************************************************************************/
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);

測試發(fā)現(xiàn),這里牽扯到一個問題,底層的函數(shù)調(diào)用和上層邏輯代碼互用,而且存在 一個誤區(qū),ad采集的時間與ad采樣以及時間延時的時間誤差,加上本身跑的是裸機跑的系統(tǒng),系統(tǒng)函數(shù) 調(diào)用過程產(chǎn)生的時間差導(dǎo)致函數(shù)在ad采集過程中達不到想要的采集效果,雙線程同樣給存在調(diào)度問題,因此雙線程(1個產(chǎn)生PWM,1個用來檢測引腳高低電平采集)這種方法在調(diào)度上和時間上存在誤差。

解決方案:

重新開啟一個定時器,在PWM開啟時同時是開啟,在PWM的低電平通過定時器的時間開始采集AD即可。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5196

    瀏覽量

    214402
  • AD
    AD
    +關(guān)注

    關(guān)注

    27

    文章

    868

    瀏覽量

    150480
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4344

    瀏覽量

    62820
收藏 人收藏

    評論

    相關(guān)推薦

    CAN發(fā)送的底層邏輯:CANwrite函數(shù)機制介紹

    這個系列是全新的系列,整個系列會通過實際操作,調(diào)試實際的代碼,以CAN為例,完整的解析AUTOSAR的從底層MCAL 到COM等上層模塊的通信鏈路層。重點講述數(shù)據(jù)的流向,以及各個模塊的作用,配置方法。
    的頭像 發(fā)表于 07-17 15:47 ?6218次閱讀
    CAN發(fā)送的<b class='flag-5'>底層</b>邏輯:CANwrite<b class='flag-5'>函數(shù)</b>機制介紹

    AD10用什么快捷鍵可以在3D視圖中上層底層快速切換啊 ...

    AD10用什么快捷鍵可以在3D視圖中上層底層快速切換啊
    發(fā)表于 11-30 16:09

    圖片中點擊上層可以返回上層目錄,上層控件怎么實現(xiàn)?

    圖片中點擊上層可以返回上層目錄,這個上層控件怎么實現(xiàn)?
    發(fā)表于 12-20 12:50

    iOS底層函數(shù)本質(zhì)

    iOS 底層(二)-函數(shù)本質(zhì)
    發(fā)表于 05-13 07:52

    為什么底層函數(shù)里面有7個呢?

    《STM32中文參考手冊》P350說到BWTR寄存器只有四個,為什么底層函數(shù)里面有7個呢?如下: SRAM/NOR閃存寫時序寄存器 1…4 (FSMC_BWTR1…4) 地址偏移:0xA000
    發(fā)表于 06-21 04:01

    淺析回調(diào)函數(shù)

    回調(diào)用于層間協(xié)作,上層將本層函數(shù)安裝在下層,這個函數(shù)就是回調(diào),而下層在一定條件下觸發(fā)回調(diào),例如作為一個驅(qū)動,是一個底層,他在收到一個數(shù)據(jù)時,除了完成本層的處理工作外,還將進行回調(diào),將這
    發(fā)表于 08-06 06:10

    幀中斷與字節(jié)中斷混用的BUG

    幀中斷與字節(jié)中斷混用的玄學(xué)BUG
    發(fā)表于 08-06 06:55

    arduino的串口底層函數(shù)在哪里修改?

    arduino的串口底層函數(shù)在哪里修改
    發(fā)表于 09-25 06:35

    為什么不能將新舊電池、不同型號電池混用?

    為什么不能將新舊電池、不同型號電池混用?         因為舊電池能量低,電量少,而新電池則能量高,電量多,當(dāng)它們混用時,不但
    發(fā)表于 10-28 15:32 ?6687次閱讀

    應(yīng)用程序調(diào)用底層驅(qū)動

    本片主要講述了嵌入式linux操作系統(tǒng)的上層應(yīng)用程序是如何調(diào)用底層驅(qū)動程序的。
    發(fā)表于 03-14 15:00 ?0次下載

    03 底層函數(shù)

    03 底層函數(shù)
    發(fā)表于 10-11 09:29 ?7次下載
    03 <b class='flag-5'>底層</b>庫<b class='flag-5'>函數(shù)</b>

    驅(qū)動之路-設(shè)備模型之上層模型

    底層模型決定上層模型,在總線,設(shè)備,驅(qū)動的結(jié)構(gòu)體中你總是可以看到它們間接或者直接的包含了kobject結(jié)構(gòu)或kset結(jié)構(gòu)。
    發(fā)表于 05-15 17:04 ?649次閱讀
    驅(qū)動之路-設(shè)備模型之<b class='flag-5'>上層</b>模型

    STM32的HAL與LL庫能共同使用(混用)嗎?

    STM32的HAL和LL庫能共同使用(混用)嗎?
    的頭像 發(fā)表于 02-28 16:57 ?1.5w次閱讀

    手機充電器可以混用

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

    Linux驅(qū)動基礎(chǔ)知識科普

    驅(qū)動就是對底層硬件設(shè)備的操作進行封裝,并向上層提供函數(shù)接口。
    的頭像 發(fā)表于 05-25 12:35 ?2575次閱讀