打印
[STM32F2]

中断的问题

[复制链接]
1502|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程轩104|  楼主 | 2014-11-5 18:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IO, pi, gp, ni, GPIO
大家好,最近在调stm32f207的中断,这个中断是外部中断,pg14连着si4438芯片的nirq管脚。现在的问题是,我每次一使能芯片,中断就自动开启,进入中断服务函数,还有一种不使能但是只要一转换si4438的模式就自动进入中断,而且不管pending设置为1,还是0也立马进入中断。很奇怪,我严重怀疑是中断初始化的问题,劳烦大家帮忙看看。
        //配置中断函数
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;        //中断
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_PuPd  =GPIO_PuPd_NOPULL;//GPIO_PuPd_UP;/
        GPIO_Init(GPIOG, &GPIO_InitStructure);
       
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOG, EXTI_PinSource14);


        /* Configure Button EXTI line */
    EXTI_InitStructure.EXTI_Line = EXTI_Line14 ;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;  //这边不知道有没有设对
    EXTI_Init(&EXTI_InitStructure);
       
        //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;   
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //DISABLE;//这边不知道有没有设对
        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里面去,中断就自动进了。
本来希望到这一步清挂起时再进入。
  // Read ITs, clear pending ones
  abApi_Write[0] = CMD_GET_INT_STATUS;  // Use interrupt status command
  abApi_Write[1] = 0;           // Clear PH_CLR_PEND
  abApi_Write[2] = 0;           // Clear MODEM_CLR_PEND
  abApi_Write[3] = 0;           // Clear CHIP_CLR_PEND
// bApi_SendCommand(4,abApi_Write);    // Send command to the radio IC
// SI4438_Write(abApi_Write[0] ,3,&abApi_Write[1] );
  SendCommand(4,abApi_Write);
  Api_GetResponse(8,abApi_Write);     // Make sure that CTS is ready then get the response

使用特权

评论回复
5
LOVE_ELEC| | 2014-11-6 12:01 | 只看该作者
这个模式下貌似不是中断不好用的问题,建议用示波器看下波形,看看是中断问题还是外部确实有波形变化!

使用特权

评论回复
6
ss1969| | 2016-4-11 21:13 | 只看该作者
我想请问一下楼主,中断方式处理是怎么做的?中断里面直接一个信号量让别的task来处理呢?还是中断里面直接判断出是tx还是rx然后分别用不同的信号量让其他task处理呢?

我是freertos+F407+4438,如果能给点例子代码更是深表感谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

39

帖子

1

粉丝