本帖最后由 nodense 于 2018-4-6 11:56 编辑
配置了PF5引脚作为外部中断触发源,按键按下的时候监测到管脚为低电平 串口能正常收到主函数发来的数据但是电机始终没有改变转动方向 中断函数的串口数据也没有输出到电脑上,说明中断没有进入(即使去掉了EXTI_Line5的判断,串口依然没有收到数据) 反复对比了例程 一直找不出原因。。。
- void KEY_Init()
- {
- GPIO_InitTypeDef GPIO_InitStr;
- EXTI_InitTypeDef EXTI_InitStr;
- NVIC_InitTypeDef NVIC_InitStr;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
-
- GPIO_InitStr.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_InitStr.GPIO_Pin = GPIO_Pin_5;
- GPIO_InitStr.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOF,&GPIO_InitStr);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOF,GPIO_PinSource5);
-
- EXTI_InitStr.EXTI_Line = EXTI_Line5;
- EXTI_InitStr.EXTI_LineCmd = ENABLE;
- EXTI_InitStr.EXTI_Mode = EXTI_Mode_Interrupt;
- EXTI_InitStr.EXTI_Trigger = EXTI_Trigger_Falling;
- EXTI_Init(&EXTI_InitStr);
-
- NVIC_InitStr.NVIC_IRQChannel = EXTI9_5_IRQn;
- NVIC_InitStr.NVIC_IRQChannelCmd=ENABLE;
- NVIC_InitStr.NVIC_IRQChannelPreemptionPriority=2;
- NVIC_InitStr.NVIC_IRQChannelSubPriority = 2;
- NVIC_Init(&NVIC_InitStr);
- }
- volatile u8 dir=0;
- void EXTI9_5_IRQHandler(void)
- {
- delay_ms(10);
- if(EXTI_GetITStatus(EXTI_Line5))
- {
- printf("\r\n This is External Interrupt \r\n");
- dir=!dir;
-
- }
- EXTI_ClearITPendingBit(EXTI_Line5);
- }
- int main(void)
- {
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- uart_init(115200);
- delay_init();
- KEY_Init();
- MOT_Init();
- while(1)
- {
- if(dir)
- {
- printf("\r\n Positice DIR \r\n");
- MOT_Run(1000);
- }
- else
- {
- printf("\r\n Negative DIR \r\n");
- MOT_Run(-1000);
- }
- }
- }
复制代码
|
不进中断关键是少了一条指令,EXTI_InitStructure.EXTI_LineCmd = ENABLE;
请参考我的回复 。(下面两个链接不一样,都看看)
https://www.stmcu.org.cn/module/foru ... 3184&fromuid=307297
https://www.stmcu.org.cn/module/foru ... 3334&fromuid=307297
评分
查看全部评分
实际上。。我贴的代码写了。。可以回去看一看。另外,我今天把这段代码换成了别的IO口,发现可以用。
但是PF5上面也可以测出电平变化,可就是没进入中断。 我用的是RCT6,数据手册也看了,没有发现什么明显的线索,让我觉得很奇怪
就是想知道是不是PF5被什么占用了(我只在这里写了关于PF5的代码,其他地方都没有)
那你就单测PF5中断功能吧。
上面链接中有我的测试程序,把管脚改一下。
总之一句话,不要太相信非官方的程序,去试试官方的标准函数库和HAL库下的样例程序,基本你的问题大多都能解决。
好的 谢谢
比如https://www.stmcu.org.cn/module/ ... amp;fromuid=2091055
评分
查看全部评分
2、确认下你的启动文件是否用对了,尤其是从别的型号移植过来时,不然容易发生矢量表位置对应的函数张冠李戴;
评分
查看全部评分
评分
查看全部评分
这个会不会有什么影响呀?