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

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

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

在使用華大單片機(jī)時(shí)對(duì)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í)間的加長(zhǎng)或者在主循環(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庫(kù)入手來(lái)分析。華大單片機(jī)M0+系列芯片在對(duì)GPIO端口輸出電平操作時(shí),DDL庫(kù)提供了如下兩種方法:


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

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

如圖:

                                               

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


詢價(jià)單
0條  相關(guān)評(píng)論
欧美黑人又粗又大xxxx| 成年女人黄小视频| 扒开双腿疯狂进出爽爽爽| 精品无码日韩一区二区三区不卡| 久久综合香蕉国产蜜臀av| 久久亚洲一区二区三区四区五区| 失禁大喷潮在线播放| 亚洲精品乱码久久久久久金桔影视| 亚洲av无码乱码在线观看富二代| 国产成人免费ā片在线观看| 色护士极品影院| 亚洲精品国产福利一二区| 午夜内射中出视频| 日本艳妓bbw高潮一19| 夹得好湿真拔不出来了动态图| 爽爽影院线观看免费| aa级女人大片免费视频| 最近免费中文字幕| 性生交大片免费看淑女出招| 中文在线8资源库| 色婷婷五月综合久久| 中文字幕在线亚洲精品| 亚洲精品一区二区另类图片| 男人狂桶女人出白浆免费视频 | 好大好硬好爽免费视频| 亚洲乱码中文字幕综合| 极品少妇一区二区三区四区| 免费人成年激情视频在线观看| 26uuu在线亚洲欧美| 久久国产精品萌白酱免费| 胯下粗长挺进人妻体内电影| 欧美内射深插日本少妇| 粗大的内捧猛烈进出在线视频| 18无码粉嫩小泬无套在线观看| 亚洲国产韩国欧美在线| 精品无码中文字幕在线| 无套内射无矿码免费看黄| 蜜桃麻豆www久久囤产精品| 国产高清一区二区三区视频| 久久aⅴ人妻少妇嫩草影院| 国产精一品亚洲二区在线播放|