日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> M0 M4之GPIO初始化
新聞資訊
NEWS INFORMATION

M0 M4之GPIO初始化

發(fā)布時間:2019-05-22

新唐所有的M0/M4芯片基本上所有的IO都可以發(fā)生中斷,為了符合大家的習(xí)慣還是有所謂的外部中斷EINT0和EINT1。有2跟GPIO腳可以配置為EINT0功能和EINT1功能,分別將發(fā)生EINT0中斷和EINT1中斷。其它的IO腳也會導(dǎo)致發(fā)生中斷,但是為很多IO共用一個向量的方式,例如:PA/PB/PC共用中斷號4,PD/PE/PF共用中斷號5。
每個IO內(nèi)部一般都帶內(nèi)部上拉電阻,軟件可以打開。一般用于按鍵,或者I2C不想外部加上拉電阻的情況。
每個IO都有邊沿中斷消抖功能,一般用作按鍵的時候或者外部輸入信號會抖動的情況下需要打開。
NUC472/NUC442和M451的IO比較特別,它們有多個Power Domain,就是所有的IO的供電電壓可以不同,在使用時一定要注意。

? NUC472和NUC442 Vbat負(fù)責(zé)PG.14、PG.15、PA.0和PA.1,這些腳由Vbat負(fù)責(zé)供電,所以Vbat一定要有電,即使不接電池也要和VDD接到一起。另外PG.14和PG.15默認(rèn)為晶振功能用于外接32K晶振,如果想改為GPIO需要修改Config area。我們一般用ICP tool修改Config area,因為Config area修改之后需要復(fù)位才能起做用。用USB線將Nu-Link和目標(biāo)板接到PC上,打開ICP tool,連接到目標(biāo)板。點(diǎn)擊Settings,然后如紅色框所示,將”Work as GPIO” 打勾

之后打勾Config,點(diǎn)擊Start就修改成功了

M451有Vbat、VDDIO和VDD 共3個power domain。Vbat負(fù)責(zé)PF0 ~ PF2,VDDIO負(fù)責(zé)PE.8 ~ PE.13
并且Vbat和VDD以及VDDIO 這3個電壓可以不同,例如:VDD給5V, VDDIO可以給3V,Vbat可以給3.6V,這可以用于板子上有多個電壓的情況。
NUC472 Power Domain詳細(xì)資料如下圖:

M451 Power Domain詳細(xì)資料如下圖:

下面介紹一下IO的初始化,IO初始化無非就是將IO設(shè)為輸入/輸出/開漏/準(zhǔn)雙向等模式,然后toggle IO,或者讀IO的狀態(tài)。另外也可能配置中斷。

Void GPIO_Init() {
 /* PB.0 配置為輸出,PD.4 配置為輸入模式 */
 GPIO_SetMode(PB, BIT0, GPIO_PMD_OUTPUT); 
GPIO_SetMode(PD, BIT4, GPIO_PMD_INPUT);
 /* PD.0 配置為輸出*/ 
GPIO_SetMode(PD, BIT0, GPIO_PMD_OUTPUT); 
/*從PB0輸出0*/ 
PB0 = 0;
 /* 將 PB5 配置為輸入模式并使能上升沿中斷 */ 
GPIO_SetMode(PB, BIT5, GPIO_PMD_INPUT); 
GPIO_EnableInt(PB, 5, GPIO_INT_RISING); NVIC_EnableIRQ(GPABC_IRQn);
/* 將 PE2 配置為輸入模式,打開內(nèi)部上拉,并使能下降沿中斷 */ GPIO_SetMode(PE, BIT2, GPIO_PMD_INPUT); GPIO_ENABLE_PULL_UP(PE, BIT2);
 GPIO_EnableInt(PE, 2, GPIO_INT_FALLING); NVIC_EnableIRQ(GPDEF_IRQn);
 /* 將 PA2 配置為 EINT0 引腳,并使能下降沿中斷 */
 SYS->PA_L_MFP = (SYS->PA_L_MFP & ~ SYS_PA_L_MFP_PA2_MFP_Msk) | SYS_PA_L_MFP_PA2_MFP_EINT0; GPIO_SetMode(PA, BIT2, GPIO_PMD_INPUT); 
GPIO_EnableEINT0(PA, 2, GPIO_INT_FALLING); NVIC_EnableIRQ(EINT0_IRQn); 
/* 使能消抖功能并選擇消抖采樣周期。因為PB.5和PE.2以及PA.2都使能了中斷,所以最好打開消抖功能 */ GPIO_SET_DEBOUNCE_TIME(GPIO_DBCLKSRC_HCLK, GPIO_DBCLKSEL_1);
GPIO_ENABLE_DEBOUNCE(PB, BIT5); 
GPIO_ENABLE_DEBOUNCE(PE, BIT2); 
GPIO_ENABLE_DEBOUNCE(PA, BIT2); }
void GPABC_IRQHandler(void) { 
/* 檢查是否發(fā)生PB.5 中斷 */ 
if (PB->ISRC & BIT5) { 
PB->ISRC = BIT5;
/*清除PB.5中斷標(biāo)志*/
 PD0 = PD0 ^ 1;
 printf("PB.5 INT occurred. \n"); 
} 
else { 
/* 不期望的其它中斷 */ 
A->ISRC = PA->ISRC; 
PB->ISRC = PB->ISRC; 
PC->ISRC = PC->ISRC; 
printf("Un-expected interrupts. \n");
 }
 }
void GPDEF_IRQHandler(void) {
 /*檢查是否發(fā)生PE.2 中斷*/
 if (PE->ISRC & BIT2) { 
PE->ISRC = BIT2; 
PD0 = PD0 ^ 1;
printf("PE.2 INT occurred. \n"); 
} 
else {
/* 不期望的其它中斷 */ 
PD->ISRC = PD->ISRC; 
PE->ISRC = PE->ISRC; 
PF->ISRC = PF->ISRC; 
printf("Un-expected interrupts. \n");
} 
} 
void EINT0_IRQHandler(void) {
 /* 清除 PA.2中斷標(biāo)志 */ 
PA->ISRC = BIT2;
 PD0 = PD0 ^ 1;
/*反轉(zhuǎn)PD.0*/ 
printf("PA.2 EINT0 occurred. \n"); 
}

GPIO IP有個寄存器叫OFFD(OFF Digital),關(guān)閉相應(yīng)管腳的數(shù)字通路的意思。如果某個管腳配置為模擬功能,例如:ADC、DAC、ACMP、SEG、COM、DH1、DH2、V1、V2、V3等功能,這些管腳對應(yīng)的OFFD bit應(yīng)該使能,關(guān)閉到數(shù)字區(qū)域的通路,避免內(nèi)部數(shù)字器件不停的打開、關(guān)閉而漏電。

 

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

广德县| 姚安县| 崇明县| 赤水市| 合阳县| 靖安县| 靖安县| 大厂| 天等县| 靖江市| 镇巴县| 金昌市| 玛沁县| 岢岚县| 曲松县| 佛冈县| 松滋市| 平山县| 宁国市| 彭山县| 柘荣县| 渭源县| 伊宁市| 大同县| 遂川县| 上思县| 文安县| 梁平县| 松潘县| 潼关县| 蕉岭县| 禹州市| 百色市| 句容市| 阜宁县| 井陉县| 元氏县| 临桂县| 梅州市| 房山区| 合水县|