ch32v003 PA1腳中斷未觸發(fā)

PA1

void?NST1001_Init(void)
{
????GPIO_InitTypeDef?GPIO_InitStructure?=?{0};
????EXTI_InitTypeDef?EXTI_InitStructure?=?{0};
????NVIC_InitTypeDef?NVIC_InitStructure?=?{0};

????RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,?ENABLE);
????GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_1;
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_IPU;
????GPIO_Init(GPIOA,?&GPIO_InitStructure);

????GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,?GPIO_PinSource1);
????EXTI_InitStructure.EXTI_Line?=?EXTI_Line1;
????EXTI_InitStructure.EXTI_Mode?=?EXTI_Mode_Interrupt;
????EXTI_InitStructure.EXTI_Trigger?=?EXTI_Trigger_Falling;
????EXTI_InitStructure.EXTI_LineCmd?=?ENABLE;
????EXTI_Init(&EXTI_InitStructure);

????NVIC_InitStructure.NVIC_IRQChannel?=?EXTI7_0_IRQn;
????NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=?0;
????NVIC_InitStructure.NVIC_IRQChannelSubPriority?=?1;
????NVIC_InitStructure.NVIC_IRQChannelCmd?=?ENABLE;
????NVIC_Init(&NVIC_InitStructure);
}

KEY1【PD3】

void?Key_Init(void)
{
????GPIO_InitTypeDef?GPIO_InitStructure?=?{0};
????EXTI_InitTypeDef?EXTI_InitStructure?=?{0};
????NVIC_InitTypeDef?NVIC_InitStructure?=?{0};

????RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,?ENABLE);
????GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_3;
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_IPU;
????GPIO_Init(GPIOD,?&GPIO_InitStructure);

????GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,?GPIO_PinSource3);
????EXTI_InitStructure.EXTI_Line?=?EXTI_Line3;
????EXTI_InitStructure.EXTI_Mode?=?EXTI_Mode_Interrupt;
????EXTI_InitStructure.EXTI_Trigger?=?EXTI_Trigger_Falling;
????EXTI_InitStructure.EXTI_LineCmd?=?ENABLE;
????EXTI_Init(&EXTI_InitStructure);

????NVIC_InitStructure.NVIC_IRQChannel?=?EXTI7_0_IRQn;
????NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=?0;
????NVIC_InitStructure.NVIC_IRQChannelSubPriority?=?1;
????NVIC_InitStructure.NVIC_IRQChannelCmd?=?ENABLE;
????NVIC_Init(&NVIC_InitStructure);
}

EXTICR = 0xC0

printf("%p\r\n",?AFIO->EXTICR);

7.3.2.2 外部中斷配置寄存器 1(AFIO_EXTICR)?

偏移地址:0x08?

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Reserved?

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0?

EXTI7[1:0] EXTI6[1:0] EXTI5[1:0] EXTI4[1:0] EXTI3[1:0] EXTI2[1:0] EXTI1[1:0] EXTI0[1:0] 位 名稱 訪問 描述 復(fù)位值 [31:16] Reserved RO 保留。 0?

[15:14] [13:12] [11:10] [9:8] [7:6] [5:4] [3:2] [1:0] EXTIx[1:0]


(x=0-7),外部中斷輸入引腳配置位。用以決 定外部中斷引腳映射到哪個(gè)端口的引腳上。 00:PA 引腳的第 x 個(gè)引腳; 10:PC 引腳的第 x 個(gè)引腳; 11:PD 引腳的第 x 個(gè)引腳

我把NST1001接到key1(PD3)可以觸發(fā)中斷,統(tǒng)計(jì)數(shù)量。

XTI->FTENR = EXTI->INTENR = 0xa

printf("%x\r\n", EXTI->INTENR);

printf("%x\r\n", EXTI->FTENR);

>>>?bin(0xa)
'0b1010'



您好,若使用PA1作為EXTI引腳,注意系統(tǒng)主頻配置要使用內(nèi)部晶振HSI,參考下圖1。此外,若使用的是我們的Demo板,注意要將晶振去掉,R5短接,因?yàn)镈emo板PA1是作為晶振腳使用的。參考下圖2。附件例程是我的測(cè)試?yán)蹋梢詤⒖家幌?/p>

icon_rar.gifCH32V003 EXTI_PA1.zip

image.png

圖1

image.png

圖2


謝謝,找到原因了。禁用復(fù)用功能就還原IO口功能了!

但是手冊(cè)并沒有說PA1和PD2默認(rèn)功能為時(shí)鐘功能,手冊(cè)上面寫的是主功能 (復(fù)位 后)為PA1和PA2,我也沒有開啟復(fù)用功能。

使用以下命令還原了!

GPIO_PinRemapConfig(GPIO_Remap_PA1_2,?DISABLE);



只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频