亚洲欧美日本韩国_久久久久亚洲AV片无码V_亚洲AV片不卡无码一_H漫全彩纯肉无码网站

您的瀏覽器版本過低,為保證更佳的瀏覽體驗(yàn),請點(diǎn)擊更新高版本瀏覽器

以后再說X
歡迎來到沈陽芯碩科技有限公司
服務(wù)熱線
024-85718900
產(chǎn)品分類
  • 暫無分類
站內(nèi)搜索
 
友情鏈接
  • 暫無鏈接
首頁 > 供應(yīng)產(chǎn)品 > 華大MCU端口使用時(shí)的競爭-冒險(xiǎn)現(xiàn)象
華大MCU端口使用時(shí)的競爭-冒險(xiǎn)現(xiàn)象
點(diǎn)擊圖片查看原圖
產(chǎn)品: 瀏覽次數(shù):76華大MCU端口使用時(shí)的競爭-冒險(xiǎn)現(xiàn)象 
單價(jià): 面議
最小起訂量:
供貨總量:
發(fā)貨期限: 自買家付款之日起 10 天內(nèi)發(fā)貨
有效期至: 長期有效
最后更新: 2022-03-03 14:36
  詢價(jià)
詳細(xì)信息

在使用華大單片機(jī)時(shí)對GPIO操作是基礎(chǔ)的操作,即使這種操作如果不注意還是會(huì)掉到坑里去。
   例如:使用同一組GPIO端口中的兩個(gè)引腳(PA00和PA01)做輸出,PA00在主循環(huán)中改變輸出狀態(tài),PA01通過中斷方式改變輸出狀態(tài)。正常的情況應(yīng)該是PA00只在主循環(huán)中改變輸出狀態(tài),而PA01只會(huì)在中斷發(fā)生時(shí)改變輸出狀態(tài)。但是,隨著程序運(yùn)行時(shí)間的加長或者在主循環(huán)中提高PA00輸出的頻率,會(huì)發(fā)現(xiàn)本應(yīng)該在中斷中完成狀態(tài)改變的PA01,個(gè)別時(shí)候狀態(tài)會(huì)不發(fā)生改變。而在中斷服務(wù)程序中設(shè)置斷點(diǎn),進(jìn)行debug發(fā)現(xiàn)中斷可以正常進(jìn)入,也能正常改變PA01的輸出狀態(tài)。要想分析造成這個(gè)情況的原因可以從網(wǎng)上提供的DDL庫入手來分析。華大單片機(jī)M0+系列芯片在對GPIO端口輸出電平操作時(shí),DDL庫提供了如下兩種方法:


方法1

<p><font face="微軟雅黑" size="3">

en_result_t Gpio_WriteOutputIO(en_gpio_port_t enPort, en_gpio_pin_t enPin, boolean_t bVal)

{

    SetBit(((uint32_t)&M0P_GPIO->PAOUT + enPort), enPin, bVal);</font></p><p><font face="微軟雅黑" size="3">    return Ok;

}</font></p>

方法2:

<p><font face="微軟雅黑" size="3">

en_result_t Gpio_SetIO(en_gpio_port_t enPort, en_gpio_pin_t enPin)

{

    SetBit(((uint32_t)&M0P_GPIO->PABSET + enPort), enPin, TRUE);</font></p><p><font face="微軟雅黑" size="3">    return Ok;

}</font></p><p><font face="微軟雅黑" size="3">

</font></p><p><font face="微軟雅黑" size="3">

en_result_t Gpio_ClrIO(en_gpio_port_t enPort, en_gpio_pin_t enPin)

{

    SetBit(((uint32_t)&M0P_GPIO->PABCLR + enPort), enPin, TRUE);</font></p><p><font face="微軟雅黑" size="3">    return Ok;

}</font></p>

 

方法1是對整個(gè)PxOUT寄存器進(jìn)行的操作,查看華大單片機(jī)用戶手冊關(guān)于此寄存器的說明; 當(dāng)PxOUT寄存器對應(yīng)位為1時(shí),對應(yīng)的引腳輸出高電平,反之輸出低電平。
   方法2是通過置位寄存器引腳對應(yīng)位的置1完成引腳輸出高電平的操作,寄存器說明。

通過清零寄存器引腳對應(yīng)位的置1完成引腳輸出低電平的操作,寄存器說明

如圖:

                                               

上述輸出不正常的現(xiàn)象是因?yàn)槭褂昧朔椒?進(jìn)行的操作。在主循環(huán)中對PA00輸出狀態(tài)的改變通過PAOUT寄存器來完成,假如PORTA所有引腳都為低電平時(shí),讓PA00輸出高電平,方法1的操作是把0x0001寫入到PAOUT寄存器就可以實(shí)現(xiàn)。在ARM的匯編指令中要把0x0001寫入到PAOUT必須借助于通用寄存器 (r0~r7)來實(shí)現(xiàn)。當(dāng)CPU剛完成0x0001移入到通用寄存器時(shí),中斷發(fā)生,CPU會(huì)把通用寄存器保存起來,然后響應(yīng)中斷,在中斷中PA01輸出高電平PAOUT值為0x0002,之后退出中斷。退出中斷后,CPU會(huì)恢復(fù)中斷之前通用寄存器的值(0x0001),再繼續(xù)把通用寄存器的值存入到PAOUT。這時(shí)PAOUT的值是0x0001,只有PA00輸出高電平,而PA01沒有輸出高電平。這種現(xiàn)象就是華大MCU端口使用時(shí)的競爭-冒險(xiǎn)現(xiàn)象。
   在使用華大芯片的時(shí)候不希望這競爭-冒險(xiǎn)現(xiàn)象出現(xiàn),通過方法2的操作完全可以避免此現(xiàn)象的出現(xiàn)。因?yàn)榉椒?是對寄存器的位進(jìn)行操作,每次操作的時(shí)候只有對應(yīng)的位進(jìn)行置位或清零,其它位值為0的時(shí)候不影響輸出的結(jié)果 。
   建議大家在開發(fā)的時(shí)候?qū)PIO端口輸出操作時(shí),使用方法2的方式來操作。


詢價(jià)單
0條  相關(guān)評論
久久这里只有精品首页| 精品人妻av区波多野结衣| 免费无码国产v片在线观看| 最新亚洲人成无码网站| 国产精品视频一区二区三区无码| 国产日韩精品一区二区三区在线| 欧美无人区码suv| 先锋影音xfyy5566男人资源| 久久国语露脸国产精品电影| 成人一区二区免费中文字幕视频| 中文字幕人妻第一区| 成人免费毛片aaaaaa片| 国产精品嫩草影院av| 国产精品99久久久久久宅男| 精品国产精品久久一区免费式| 欧美巨大xxxx做受l| 久久久综合香蕉尹人综合网| 亚洲乱色熟女一区二区三区丝袜| 亚洲av无码之国产精品| 国产精品久久久久久久9999| 国产免费无码一区二区视频| 久久精品中文无码资源站| 国产无遮挡18禁网站免费| 免费观看成人欧美www色| 欧美日韩精品一区二区视频| 国产精品成人aaaaa网站| 国产欧美日韩一区二区三区在线| 麻豆一区产品精品蜜桃的广告语| 国产精品麻豆va在线播放| 大地资源网高清在线播放| 国产乱妇乱子视频在播放 | 国产人澡人澡澡澡人碰视频| 少妇伦子伦情品无吗| 国产又色又爽又刺激在线观看| 日韩制服国产精品一区| 人妻少妇被粗大爽.9797pw| 97久久草草超级碰碰碰| 国产精品户露av在线户外直播| 欧美日韩精品suv| 97久久香蕉国产线看观看| 午夜精品久久久久久久久 |