女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

芯片設計上的BUG

嵌入式電子創客街 ? 來源:嵌入式電子創客街 ? 作者:嵌入式電子創客街 ? 2022-10-26 09:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

近期白嫖君在使用GD32這款芯片時候,發現了一個大概率是芯片設計上的BUG,貼出來和大家分享一下。

我們在使用串口發送數據時,無非是使用兩種方法,一種是逐字節發送,另一種是DMA發送。

af7164ca-54cb-11ed-a3b6-dac502259ad0.png

一般串口發送數據前,我們需要先查看TBE標志位,判斷緩存區內是不是已經空了,如果空了我們才會往里填數據。

但是當發送緩存區為空時,并不代表我們的數據已經實際發完了,只是代表緩存區內的數據空了,這時物理意義上的發送可能還在進行中,如果你使用RS485器件,這時候把發送使能關斷的話,就會丟失一個字節的數據。

因此,一般發送完成后,需要檢查TC標志是不是已經被拉高了,以此來判斷數據線上的數據是不是確實已經發結束了。

void usart_sendbuf(uint32_t usart_periph, uint8_t *Buffer , uint16_t ucSend_num)
{        
    unsigned int i;
    usart_flag_clear(usart_periph, USART_FLAG_TC);  //在發送前要先清除TC
    for(i = 0; i < ucSend_num; i++)
    {        
        while(usart_flag_get(usart_periph, USART_FLAG_TBE) == RESET); 
        usart_data_transmit(usart_periph, Buffer[i]);
    }
while(usart_flag_get(usart_periph,USART_FLAG_TC)==RESET);
}

這次白嫖君的程序就是還按照這個套路來寫的,串口發送數據量比較大,在運行一段時間后,程序突然就死機了,查看一下,是死在了最后一行等待TC標志位這里。查看寄存器列表,TC始終為0。

af90f7fe-54cb-11ed-a3b6-dac502259ad0.png

下面是官方庫函數手冊上給出的說明:

afa87802-54cb-11ed-a3b6-dac502259ad0.png

TC標識是受單片機硬件控制的,并不受程序影響,這里無法拉高九成九就是芯片BUG了,于是白嫖君谷歌了一下,發現也有人遇到類似問題:

afb65058-54cb-11ed-a3b6-dac502259ad0.png

針對這種情況,硬件上無法做出改善,只能從軟件上規避了:

void usart_sendbuf(uint32_t usart_periph, uint8_t *Buffer , uint16_t ucSend_num)
{        
    uint32_t i;
    uint32_t j = 0;
    
    usart_flag_clear(usart_periph, USART_FLAG_TC);  //為了使用TC,在發送前要先清除TC
    for(i = 0; i< ucSend_num; i++)
    {        
        while(usart_flag_get(usart_periph, USART_FLAG_TBE) == RESET); 
        usart_data_transmit(usart_periph, Buffer[i]);
    }
    while(usart_flag_get(usart_periph, USART_FLAG_TC) == RESET)
    {
        if(j++ >= 0xFFFF) //在這里加超時機制
        {
            break;
        }
    }        
}

引入超時機制,當等待時間超過設定閾值,則不再等待TC置位,以此來避免程序阻塞假死。

特別注意:出現這種情況目前來說可能GD全系都有可能存在這個問題,且不區分是USART0還是USARTx,同時似乎只在數據量較大時會出現此種情況。我以前用GD的片子也不少,從沒遇見過這種情況。特此說明,避免抬杠嘛~

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    459

    文章

    52481

    瀏覽量

    440591
  • 單片機
    +關注

    關注

    6067

    文章

    44982

    瀏覽量

    650298

原文標題:國產單片機GD32 串口發送再現BUG?

文章出處:【微信號:嵌入式電子創客街,微信公眾號:嵌入式電子創客街】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何在Android設備安裝Cyusb3014芯片驅動?

    1.如何在Android設備安裝Cyusb3014芯片驅動? 我們在 Windows 上有 FX3 驅動程序 SDK。 2.如何在Android系統上下載固件到芯片中?
    發表于 05-15 07:23

    芯片流片失敗都有哪些原因

    版本拿錯,基本芯片就廢了。這種情況還真不少。2.流片的時候存在重大bug。如果說一款芯片流片出去完全沒有bug是不可能的,大部分的bug都不
    的頭像 發表于 03-28 10:03 ?585次閱讀
    <b class='flag-5'>芯片</b>流片失敗都有哪些原因

    Gui Guiderv1.9.0使用下拉框控件問題,出現bug不顯示list選項怎么解決?

    Gui Guiderv1.9.0使用下拉框控件問題,出現bug不顯示list選項
    發表于 03-25 06:53

    AI在芯片的應用:革新設計與功能

    AI在芯片的應用正在深刻改變著芯片設計、制造和應用的全過程。未來,隨著AI技術的不斷進步和應用場景的不斷拓展,AI芯片將成為推動科技發展的重要力量。
    的頭像 發表于 02-17 16:09 ?561次閱讀

    移動端設備稀奇古怪的前端問題收集(一)

    作為一名開發者,bug 往往是我們最怕遇見的東西;而比遇到 bug 更可怕的事情,是定位不到 bug。作為一名前端開發者,與業務邏輯相關的 bug 還相對好定位、好解決一些;而一些與語
    的頭像 發表于 01-24 15:41 ?378次閱讀

    使用SIGMA STUDIO PLUS對連接在ADAU1452 SPI的FLASH進行編程時,程序并不能成功的寫入flash怎么解決?

    我嘗使用SIGMA STUDIO PLUS 對連接在ADAU1452 SPI的FLASH進行編程時,發現程序并不能成功的寫入flash, 使用的FLASH芯片時M25P80,配置如下: 編程
    發表于 12-19 07:26

    KiCon 演講回顧(十五):提交 Kicad Bug

    “?Wayne Stambaugh 分享了如何提升 KiCad 用戶和開發者體驗的關鍵一環:報告KiCad Bug。?” 完整的演講視頻在這里: KiCad的使命 KiCad旨在為專業電子設計師提供
    的頭像 發表于 12-11 09:09 ?496次閱讀
    KiCon 演講回顧(十五):提交 Kicad  <b class='flag-5'>Bug</b>

    IC芯片磨字機 刻字機 卷對卷料# IC芯片# IC刻字機

    芯片
    東莞市維品科技有限公司
    發布于 :2024年10月24日 13:57:33

    eeprom芯片用在什么

    EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦除可編程只讀存儲器)是一種非易失性存儲器,可以在不移除芯片的情況下,通過
    的頭像 發表于 10-17 10:36 ?2436次閱讀

    TAS5630B芯片的12V和地短路了,芯片不在板子,為什么?怎么解除?

    TAS5630B芯片的12V和地短路了,芯片不在板子,無任何外圍電路, 請問是芯片壞了嗎,還是進入某種保護,如果進入某種保護,可以解除嗎,是怎么解除
    發表于 10-16 06:07

    引腳封裝HotRod和FC-SOT倒裝芯片的降額和壽命計算

    電子發燒友網站提供《引腳封裝HotRod和FC-SOT倒裝芯片的降額和壽命計算.pdf》資料免費下載
    發表于 09-26 11:30 ?2次下載
    引腳封裝HotRod和FC-SOT<b class='flag-5'>上</b>倒裝<b class='flag-5'>芯片</b>的降額和壽命計算

    一般ram芯片的引腳有哪些

    RAM(Random Access Memory,隨機存取存儲器)芯片的引腳通常包括多種類型,用于實現數據的存儲、讀取、寫入以及與其他組件的通信。以下是一些常見的RAM芯片引腳類型及其功能: 電源
    的頭像 發表于 09-18 11:07 ?3119次閱讀

    stm32H7 HAL庫中存在的bug

    stm32H7 hal 庫里面的以太網代碼,坑了魚鷹很多次(不知道最新版是否已經修復了這些bug),這里分享一篇網上的文章,因為魚鷹也遇到過,靠它解決了其中一個編譯優化問題,在此感謝作者。不過hal
    的頭像 發表于 08-12 17:37 ?2277次閱讀

    底部填充工藝在倒裝芯片的應用

    底部填充工藝在倒裝芯片(FlipChip)的應用是一種重要的封裝技術,旨在提高封裝的可靠性和延長電子產品的使用壽命。以下是該工藝的主要應用和優勢:增強可靠性:倒裝芯片封裝中的焊點(常為金錫合金或鉛
    的頭像 發表于 07-19 11:16 ?1259次閱讀
    底部填充工藝在倒裝<b class='flag-5'>芯片</b><b class='flag-5'>上</b>的應用