[STM32F2] 中断的问题

[复制链接]
 楼主| 程轩104 发表于 2014-11-5 18:36 | 显示全部楼层 |阅读模式
IO, pi, gp, ni, GPIO
大家好,最近在调stm32f207的中断,这个中断是外部中断,pg14连着si4438芯片的nirq管脚。现在的问题是,我每次一使能芯片,中断就自动开启,进入中断服务函数,还有一种不使能但是只要一转换si4438的模式就自动进入中断,而且不管pending设置为1,还是0也立马进入中断。很奇怪,我严重怀疑是中断初始化的问题,劳烦大家帮忙看看。
  1.         //配置中断函数
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;        //中断
  3.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  4.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  5.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  6.         GPIO_InitStructure.GPIO_PuPd  =GPIO_PuPd_NOPULL;//GPIO_PuPd_UP;/
  7.         GPIO_Init(GPIOG, &GPIO_InitStructure);
  8.        
  9.         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOG, EXTI_PinSource14);


  10.         /* Configure Button EXTI line */
  11.     EXTI_InitStructure.EXTI_Line = EXTI_Line14 ;
  12.     EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  13.     EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  14.     EXTI_InitStructure.EXTI_LineCmd = ENABLE;  //这边不知道有没有设对
  15.     EXTI_Init(&EXTI_InitStructure);
  16.        
  17.         //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  18.         NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
  19.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;   
  20.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  21.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //DISABLE;//这边不知道有没有设对
  22.         NVIC_Init(&NVIC_InitStructure);
 楼主| 程轩104 发表于 2014-11-5 18:43 | 显示全部楼层
用的是stm32+ucos
mmuuss586 发表于 2014-11-5 19:25 | 显示全部楼层
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
设置没问题,对了下我程序,无非多了上面一句,但这没啥影响;
中断怎么处理的呢???
 楼主| 程轩104 发表于 2014-11-6 10:32 | 显示全部楼层
还没清中断挂起就自动进入中断了...,main函数里面只是初始化外设的一些函数,但是每次只要一涉及到写初始化数据到si4438里面去,中断就自动进了。
本来希望到这一步清挂起时再进入。
  1.   // Read ITs, clear pending ones
  2.   abApi_Write[0] = CMD_GET_INT_STATUS;  // Use interrupt status command
  3.   abApi_Write[1] = 0;           // Clear PH_CLR_PEND
  4.   abApi_Write[2] = 0;           // Clear MODEM_CLR_PEND
  5.   abApi_Write[3] = 0;           // Clear CHIP_CLR_PEND
  6. // bApi_SendCommand(4,abApi_Write);    // Send command to the radio IC
  7. // SI4438_Write(abApi_Write[0] ,3,&abApi_Write[1] );
  8.   SendCommand(4,abApi_Write);
  9.   Api_GetResponse(8,abApi_Write);     // Make sure that CTS is ready then get the response
LOVE_ELEC 发表于 2014-11-6 12:01 | 显示全部楼层
这个模式下貌似不是中断不好用的问题,建议用示波器看下波形,看看是中断问题还是外部确实有波形变化!
ss1969 发表于 2016-4-11 21:13 | 显示全部楼层
我想请问一下楼主,中断方式处理是怎么做的?中断里面直接一个信号量让别的task来处理呢?还是中断里面直接判断出是tx还是rx然后分别用不同的信号量让其他task处理呢?

我是freertos+F407+4438,如果能给点例子代码更是深表感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

39

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

17

主题

39

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部