精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

首頁 >產(chǎn)品 >電子 > 集成電路/IC> 單片機(jī)>華大MCU端口使用時(shí)的競爭-冒險(xiǎn)現(xiàn)象

華大MCU端口使用時(shí)的競爭-冒險(xiǎn)現(xiàn)象

數(shù)量(件) 價(jià)格
1000 3000.00元/件
  • 最小起訂: 1件
  • 發(fā)貨地址: 遼寧 沈陽市
  • 發(fā)布日期:2021-09-23
  • 訪問量:211
咨詢電話:188-7506-7453
打電話時(shí)請告知是在機(jī)電之家網(wǎng)上看到獲取更多優(yōu)惠。謝謝!
5

沈陽芯碩科技有限公司

實(shí)名認(rèn)證 企業(yè)認(rèn)證
  • 企業(yè)地址:

更多>>推薦產(chǎn)品

詳細(xì)參數(shù)
品牌其他型號華大HC32F460
封裝形式其他導(dǎo)電類型其他
封裝外形其他集成度其他
加工定制

產(chǎn)品詳情

在使用華大單片機(jī)時(shí)對GPIO操作是基礎(chǔ)的操作,即使這種操作如果不注意還是會掉到坑里去。
  
例如:使用同一組GPIO端口中的兩個(gè)引腳(PA00PA01)做輸出,PA00在主循環(huán)中改變輸出狀態(tài),PA01通過中斷方式改變輸出狀態(tài)。正常的情況應(yīng)該是PA00只在主循環(huán)中改變輸出狀態(tài),而PA01只會在中斷發(fā)生時(shí)改變輸出狀態(tài)。但是,隨著程序運(yùn)行時(shí)間的加長或者在主循環(huán)中提高PA00輸出的頻率,會發(fā)現(xiàn)本應(yīng)該在中斷中完成狀態(tài)改變的PA01,個(gè)別時(shí)候狀態(tài)會不發(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">/*****************************************************************************

 ** \brief GPIO IO輸出值寫入

 **

 ** \b [in]  enPort          IO Port口

 ** \b [in]  enPin           IO Pin腳

 ** \b [out] bVal            輸出值

 **

 ** \retval en_result_t           Ok          設(shè)置成功

 **                                         其他值    設(shè)置失敗 ******************************************************************************/

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">/*******************************************************************************

 ** \brief GPIO IO設(shè)置

 **

 ** \b [in]  enPort          IO Port口

 ** \b [in]  enPin           IO Pin腳

 **

 ** \retval en_result_t           Ok        設(shè)置成功

 **                                        其他值   設(shè)置失敗 ******************************************************************************/

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">/******************************************************************************

 ** \brief GPIO IO清零

 **

 ** \b [in]  enPort          IO Port口

 ** \b [in]  enPin           IO Pin腳

 **

 ** \retval en_result_t           Ok        設(shè)置成功

 **                                         其他值  設(shè)置失敗 ******************************************************************************/

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)槭褂昧朔椒?span>1進(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會把通用寄存器保存起來,然后響應(yīng)中斷,在中斷中PA01輸出高電平PAOUT值為0X0002,之后退出中斷。退出中斷后,CPU會恢復(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)榉椒?span>2是對寄存器的位進(jìn)行操作,每次操作的時(shí)候只有對應(yīng)的位進(jìn)行置位或清零,其它位值為0的時(shí)候不影響輸出的結(jié)果 。
   建議大家在開發(fā)的時(shí)候?qū)?span>GPIO端口輸出操作時(shí),使用方法2的方式來操作。

溫馨提示

  • 還沒找到想要的產(chǎn)品嗎? 立即發(fā)布采購信息,讓供應(yīng)商主動與您聯(lián)系!

免責(zé)聲明:所展示的信息由會員自行提供,內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性由發(fā)布會員負(fù)責(zé),機(jī)電之家網(wǎng)對此不承擔(dān)任何責(zé)任。機(jī)電之家網(wǎng)不涉及用戶間因交易而產(chǎn)生的法律關(guān)系及法律糾紛,糾紛由您自行協(xié)商解決。
友情提醒:本網(wǎng)站僅作為用戶尋找交易對象,就貨物和服務(wù)的交易進(jìn)行協(xié)商,以及獲取各類與貿(mào)易相關(guān)的服務(wù)信息的平臺。為避免產(chǎn)生購買風(fēng)險(xiǎn),建議您在購買相關(guān)產(chǎn)品前務(wù)必確認(rèn)供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。過低的價(jià)格、夸張的描述、私人銀行賬戶等都有可能是虛假信息,請采購商謹(jǐn)慎對待,謹(jǐn)防欺詐,對于任何付款行為請您慎重抉擇!如您遇到欺詐等不誠信行為,請您立即與機(jī)電之家網(wǎng)聯(lián)系,如查證屬實(shí),機(jī)電之家網(wǎng)會對該企業(yè)商鋪?zhàn)鲎N處理,但機(jī)電之家網(wǎng)不對您因此造成的損失承擔(dān)責(zé)任!
您也可以進(jìn)入“消費(fèi)者防騙指南”了解投訴及處理流程,我們將竭誠為您服務(wù),感謝您對機(jī)電之家網(wǎng)的關(guān)注與支持!

您是不是在找

德保县| 大厂| 增城市| 平顺县| 耿马| 庆城县| 嘉荫县| 嵩明县| 荔浦县| 米脂县| 罗江县| 观塘区| 平阴县| 阜阳市| 宜城市| 锡林浩特市| 乐昌市| 九龙坡区| 衡南县| 随州市| 林口县| 漯河市| 县级市| 天津市| 镇江市| 精河县| 南通市| 永善县| 遵义县| 大洼县| 平顶山市| 修文县| 缙云县| 交城县| 元氏县| 津南区| 荥阳市| 乌鲁木齐县| 天等县| 沽源县| 如皋市|