avav588con,最近2019中文免费字幕在线观看,欧美一道本一区二区三区,九九热在线观看,经典好看免费AV

行業(yè)產(chǎn)品

  • 行業(yè)產(chǎn)品

沈陽(yáng)芯碩科技有限公司


當(dāng)前位置:沈陽(yáng)芯碩科技有限公司>>單片機(jī)/芯片>>華大MCU端口使用時(shí)的競(jìng)爭(zhēng)-冒險(xiǎn)現(xiàn)象

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

返回列表頁(yè)
參  考  價(jià)面議
具體成交價(jià)以合同協(xié)議為準(zhǔn)

產(chǎn)品型號(hào)

品       牌

廠商性質(zhì)代理商

所  在  地沈陽(yáng)市

聯(lián)系方式:宣女士查看聯(lián)系方式

更新時(shí)間:2021-09-23 13:05:33瀏覽次數(shù):341次

聯(lián)系我時(shí),請(qǐng)告知來(lái)自 智慧城市網(wǎng)

經(jīng)營(yíng)模式:代理商

商鋪產(chǎn)品:94條

所在地區(qū):遼寧沈陽(yáng)市

聯(lián)系人:宣女士 (經(jīng)理)

產(chǎn)品簡(jiǎn)介

在使用華大單片機(jī)時(shí)對(duì)GPIO操作是基礎(chǔ)的操作,即使這種操作如果不注意還是會(huì)掉到坑里去。

詳細(xì)介紹

在使用華大單片機(jī)時(shí)對(duì)GPIO操作是基礎(chǔ)的操作,即使這種操作如果不注意還是會(huì)掉到坑里去。
  
例如:使用同一組GPIO端口中的兩個(gè)引腳(PA00PA01)做輸出,PA00在主循環(huán)中改變輸出狀態(tài),PA01通過(guò)中斷方式改變輸出狀態(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">/*****************************************************************************

 ** brief GPIO IO輸出值寫(xiě)入

 **

 ** param [in]  enPort          IO Port

 ** param [in]  enPin           IO Pin

 ** param [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è)置

 **

 ** param [in]  enPort          IO Port

 ** param [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清零

 **

 ** param [in]  enPort          IO Port

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

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

如圖:

                                               

140827gc5uzut5xcdyx2m9.png


上述輸出不正常的現(xiàn)象是因?yàn)槭褂昧朔椒?span>1進(jìn)行的操作。在主循環(huán)中對(duì)PA00輸出狀態(tài)的改變通過(guò)PAOUT寄存器來(lái)完成,假如PORTA所有引腳都為低電平時(shí),讓PA00輸出高電平,方法1的操作是把0X0001寫(xiě)入到PAOUT寄存器就可以實(shí)現(xiàn)。在ARM的匯編指令中要把0X0001寫(xiě)入到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沒(méi)有輸出高電平。這種現(xiàn)象就是華大MCU端口使用時(shí)的競(jìng)爭(zhēng)-冒險(xiǎn)現(xiàn)象。
   在使用華大芯片的時(shí)候不希望這競(jìng)爭(zhēng)-冒險(xiǎn)現(xiàn)象出現(xiàn),通過(guò)方法2的操作*可以避免此現(xiàn)象的出現(xiàn)。因?yàn)榉椒?span>2是對(duì)寄存器的位進(jìn)行操作,每次操作的時(shí)候只有對(duì)應(yīng)的位進(jìn)行置位或清零,其它位值為0的時(shí)候不影響輸出的結(jié)果 。
   建議大家在開(kāi)發(fā)的時(shí)候?qū)?span>GPIO端口輸出操作時(shí),使用方法2的方式來(lái)操作。



感興趣的產(chǎn)品PRODUCTS YOU ARE INTERESTED IN

智慧城市網(wǎng) 設(shè)計(jì)制作,未經(jīng)允許翻錄必究 .? ? ? Copyright(C)?2021 http://www.duty-free.cn,All rights reserved.

以上信息由企業(yè)自行提供,信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性由相關(guān)企業(yè)負(fù)責(zé),智慧城市網(wǎng)對(duì)此不承擔(dān)任何保證責(zé)任。 溫馨提示:為規(guī)避購(gòu)買(mǎi)風(fēng)險(xiǎn),建議您在購(gòu)買(mǎi)產(chǎn)品前務(wù)必確認(rèn)供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。

會(huì)員登錄

×

請(qǐng)輸入賬號(hào)

請(qǐng)輸入密碼

=

請(qǐng)輸驗(yàn)證碼

收藏該商鋪

請(qǐng) 登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時(shí)間回復(fù)您~