日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

芯片設(shè)計(jì)上的BUG

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

掃碼添加小助手

加入工程師交流群

近期白嫖君在使用GD32這款芯片時(shí)候,發(fā)現(xiàn)了一個(gè)大概率是芯片設(shè)計(jì)上的BUG,貼出來(lái)和大家分享一下。

我們?cè)谑褂么诎l(fā)送數(shù)據(jù)時(shí),無(wú)非是使用兩種方法,一種是逐字節(jié)發(fā)送,另一種是DMA發(fā)送。

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

一般串口發(fā)送數(shù)據(jù)前,我們需要先查看TBE標(biāo)志位,判斷緩存區(qū)內(nèi)是不是已經(jīng)空了,如果空了我們才會(huì)往里填數(shù)據(jù)。

但是當(dāng)發(fā)送緩存區(qū)為空時(shí),并不代表我們的數(shù)據(jù)已經(jīng)實(shí)際發(fā)完了,只是代表緩存區(qū)內(nèi)的數(shù)據(jù)空了,這時(shí)物理意義上的發(fā)送可能還在進(jìn)行中,如果你使用RS485器件,這時(shí)候把發(fā)送使能關(guān)斷的話,就會(huì)丟失一個(gè)字節(jié)的數(shù)據(jù)。

因此,一般發(fā)送完成后,需要檢查T(mén)C標(biāo)志是不是已經(jīng)被拉高了,以此來(lái)判斷數(shù)據(jù)線上的數(shù)據(jù)是不是確實(shí)已經(jīng)發(fā)結(jié)束了。

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);  //在發(fā)送前要先清除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);
}

這次白嫖君的程序就是還按照這個(gè)套路來(lái)寫(xiě)的,串口發(fā)送數(shù)據(jù)量比較大,在運(yùn)行一段時(shí)間后,程序突然就死機(jī)了,查看一下,是死在了最后一行等待TC標(biāo)志位這里。查看寄存器列表,TC始終為0。

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

下面是官方庫(kù)函數(shù)手冊(cè)上給出的說(shuō)明:

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

TC標(biāo)識(shí)是受單片機(jī)硬件控制的,并不受程序影響,這里無(wú)法拉高九成九就是芯片BUG了,于是白嫖君谷歌了一下,發(fā)現(xiàn)也有人遇到類(lèi)似問(wèn)題:

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

針對(duì)這種情況,硬件上無(wú)法做出改善,只能從軟件上規(guī)避了:

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,在發(fā)送前要先清除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) //在這里加超時(shí)機(jī)制
        {
            break;
        }
    }        
}

引入超時(shí)機(jī)制,當(dāng)?shù)却龝r(shí)間超過(guò)設(shè)定閾值,則不再等待TC置位,以此來(lái)避免程序阻塞假死。

特別注意:出現(xiàn)這種情況目前來(lái)說(shuō)可能GD全系都有可能存在這個(gè)問(wèn)題,且不區(qū)分是USART0還是USARTx,同時(shí)似乎只在數(shù)據(jù)量較大時(shí)會(huì)出現(xiàn)此種情況。我以前用GD的片子也不少,從沒(méi)遇見(jiàn)過(guò)這種情況。特此說(shuō)明,避免抬杠嘛~

審核編輯 :李倩


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

    關(guān)注

    463

    文章

    54565

    瀏覽量

    470429
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6078

    文章

    45613

    瀏覽量

    674806

原文標(biāo)題:國(guó)產(chǎn)單片機(jī)GD32 串口發(fā)送再現(xiàn)BUG?

文章出處:【微信號(hào):嵌入式電子創(chuàng)客街,微信公眾號(hào):嵌入式電子創(chuàng)客街】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    阿卡思微電子推出HimaFormal MC+UCAgent智能形式化驗(yàn)證解決方案

    隨著芯片設(shè)計(jì)復(fù)雜度不斷攀升,如何確保隱藏在代碼中的邏輯Bug無(wú)處遁形,成為芯片成功流片的關(guān)鍵。
    的頭像 發(fā)表于 05-07 15:00 ?295次閱讀
    阿卡思微電子推出HimaFormal MC+UCAgent智能形式化驗(yàn)證解決方案

    如何在 S32 Design studio 使用 configtool 配置S32G274A芯片的所有通信和 GPIO?

    我只是想在 S32 Design studio 使用 configtool 配置S32G274A芯片的所有通信和 GPIO。 It says MCU is not selected.
    發(fā)表于 04-20 11:04

    S32K3X8EVB-Q289_HWPack_C2的LpSPI半雙工錯(cuò)誤怎么解決?

    正確時(shí)序輸出。我不確定這是芯片存在的bug,我已檢查過(guò)所有設(shè)置。 附上部分截圖以供參考。此處使用了下降沿中斷功能,觸發(fā)于芯片選擇引腳,且ISR 調(diào)用了Ipspi_ip_asynctransmithalfduplex 函數(shù)。
    發(fā)表于 04-20 08:29

    Linux內(nèi)核bug狩獵指南:從棧跟蹤到修復(fù),官方文檔教你搞定系統(tǒng)核心故障

    內(nèi)核是 Linux 系統(tǒng)的 “心臟”—— 一旦它出 bug,小則功能異常,大則系統(tǒng)崩潰、死機(jī)。但內(nèi)核 bug 往往藏在百萬(wàn)行代碼中,想快速定位、修復(fù)絕非易事。
    的頭像 發(fā)表于 02-06 16:59 ?3381次閱讀
    Linux內(nèi)核<b class='flag-5'>bug</b>狩獵指南:從棧跟蹤到修復(fù),官方文檔教你搞定系統(tǒng)核心故障

    Camera應(yīng)用旋轉(zhuǎn)預(yù)覽拉伸Bug:RK3588+Android 12環(huán)境下的復(fù)現(xiàn)、分析與臨時(shí)解決方案

    在移動(dòng)設(shè)備 Camera 應(yīng)用開(kāi)發(fā)中,預(yù)覽畫(huà)面穩(wěn)定性直接影響用戶拍攝體驗(yàn)。近期我們?cè)赗K3588 芯片平臺(tái) + Android 12 系統(tǒng)環(huán)境下調(diào)試時(shí),發(fā)現(xiàn) Camera2 應(yīng)用存在高概率預(yù)覽拉伸
    的頭像 發(fā)表于 02-04 16:17 ?469次閱讀
    Camera應(yīng)用旋轉(zhuǎn)預(yù)覽拉伸<b class='flag-5'>Bug</b>:RK3588+Android 12環(huán)境下的復(fù)現(xiàn)、分析與臨時(shí)解決方案

    嵌入式軟件測(cè)試找bug的常見(jiàn)方法和秘訣

    “我怎么才能使程序跑得更快”、“什么編譯器最好”等問(wèn)題。 面對(duì)這個(gè)不同尋常卻異乎成熟的問(wèn)題,可能很多人都不知道怎么辦,下面就來(lái)講講軟件測(cè)試找bug常見(jiàn)方法和秘訣。 1懂得使用工具 通常嵌入式系統(tǒng)
    發(fā)表于 01-12 07:07

    芯片封裝方式終極指南(

    這是一份涉及芯片封裝幾乎所有關(guān)鍵概念的終極指南,它可以幫助您全面了解芯片的封裝方式以及未來(lái)互連技術(shù)的發(fā)展趨勢(shì)。
    的頭像 發(fā)表于 11-27 09:31 ?4220次閱讀
    <b class='flag-5'>芯片</b>封裝方式終極指南(<b class='flag-5'>上</b>)

    芯片制造的毫微之戰(zhàn):去膠工藝定成敗# 芯片#

    芯片
    華林科納半導(dǎo)體設(shè)備制造
    發(fā)布于 :2025年09月17日 16:26:50

    飛騰主板芯片組X100能起到什么作用?

    飛騰主板芯片組X100作為飛騰處理器的重要配套芯片,在計(jì)算機(jī)系統(tǒng)中承擔(dān)著多元且關(guān)鍵的作用,主要體現(xiàn)在圖形圖像處理與接口擴(kuò)展兩大核心功能領(lǐng)域。
    的頭像 發(fā)表于 07-28 09:25 ?843次閱讀

    STM32CubeMX初始配置沖突的BUG怎么處理?

    發(fā)現(xiàn)了一個(gè)BUG,比如我們?cè)谑褂瞄_(kāi)發(fā)板進(jìn)行板載按鍵中斷配置的時(shí)候,如果開(kāi)啟板子資源初始化配置,我們?cè)僮孕信渲靡幌潞?,產(chǎn)生了一個(gè)不識(shí)別的外部中斷處理函數(shù)
    發(fā)表于 07-22 08:02

    針對(duì)晶圓芯片工藝的光刻膠剝離方法及白光干涉儀在光刻圖形的測(cè)量

    引言 在晶圓芯片制造工藝中,光刻膠剝離是承上啟下的關(guān)鍵環(huán)節(jié),其效果直接影響芯片性能與良率。同時(shí),光刻圖形的精確測(cè)量是保障工藝精度的重要手段。本文將介紹適用于晶圓芯片工藝的光刻膠剝離方
    的頭像 發(fā)表于 06-25 10:19 ?1373次閱讀
    針對(duì)晶圓<b class='flag-5'>上</b><b class='flag-5'>芯片</b>工藝的光刻膠剝離方法及白光干涉儀在光刻圖形的測(cè)量

    芯知識(shí)|語(yǔ)音芯片發(fā)碼無(wú)聲解析:電無(wú)聲、連發(fā)指令才響的三大根源及解決之道

    在嵌入式語(yǔ)音方案開(kāi)發(fā)中,廣州唯創(chuàng)電子語(yǔ)音芯片(如WT系列)以其高性?xún)r(jià)比和易用性廣受青睞。但當(dāng)開(kāi)發(fā)者遭遇“電發(fā)碼無(wú)聲”或“必須連發(fā)兩次指令才有聲音”的問(wèn)題時(shí),往往陷入調(diào)試?yán)Ь场1疚膶⑸钊肫饰鲞@些現(xiàn)象
    的頭像 發(fā)表于 06-19 09:14 ?1309次閱讀
    芯知識(shí)|語(yǔ)音<b class='flag-5'>芯片</b>發(fā)碼無(wú)聲解析:<b class='flag-5'>上</b>電無(wú)聲、連發(fā)指令才響的三大根源及解決之道

    芯知識(shí)|WT2003H 語(yǔ)音芯片模擬U盤(pán)功能詳解:電初始化時(shí)間解析

    擺脫了傳統(tǒng)語(yǔ)音芯片依賴(lài)專(zhuān)用燒錄器和復(fù)雜協(xié)議的束縛,大幅提升了開(kāi)發(fā)和生產(chǎn)效率。然而,與這一強(qiáng)大便利性相伴的是一個(gè)重要的技術(shù)細(xì)節(jié):電初始化時(shí)間。關(guān)鍵特性:較長(zhǎng)的電初
    的頭像 發(fā)表于 06-12 08:52 ?945次閱讀
    芯知識(shí)|WT2003H 語(yǔ)音<b class='flag-5'>芯片</b>模擬U盤(pán)功能詳解:<b class='flag-5'>上</b>電初始化時(shí)間解析
    台南市| 林甸县| 福州市| 龙口市| 微博| 利川市| 嘉黎县| 彭泽县| 嘉禾县| 南溪县| 安庆市| 乐陵市| 页游| 深圳市| 宜川县| 海伦市| 天镇县| 林周县| 铁力市| 英德市| 陕西省| 清涧县| 栖霞市| 普陀区| 科尔| 灵丘县| 栾川县| 香河县| 宁明县| 团风县| 西乌珠穆沁旗| 喜德县| 穆棱市| 内乡县| 常熟市| 绵阳市| 海原县| 南丰县| 永靖县| 慈利县| 宣汉县|