外部中断的一个现象?

2019-07-20 20:44发布

当外部中断服务函数里只写一句翻转io的代码的时候,实验现象是有时能翻转有时不能翻转,但当我加一句延时1us后,就每次都能翻转了,为什么会这样?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
27条回答
dfbb123
2019-07-23 02:37
本帖最后由 dfbb123 于 2016-8-9 19:12 编辑
特朗姆斯 发表于 2016-8-9 14:28
建议贴一下关键部分的代码,有时候发生问题的原因是其它因素导致的

你觉得有必要?好吧那就贴下中断服务函数里的内容吧
void EXTI4_IRQHandler(void)
{
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
delay_us(1);        
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);        
        
        PEout(2)=!PEout(2);
        PBout(9)=!PBout(9);
        

        EXTI->PR=1<<4;  //&#199;&#229;3yLINE0é&#207;μ&#196;&#214;D&#182;&#207;±ê&#214;&#190;&#206;&#187;  
}         
还有中断初始化的部分
void EXTIX_Init(void)
{
        KEY_Init();
        Ex_NVIC_Config(GPIO_E,4,1);                 //&#207;&#194;&#189;μ&#209;&#216;′¥·¢
//        Ex_NVIC_Config(GPIO_E,3,FTIR);                 //&#207;&#194;&#189;μ&#209;&#216;′¥·¢
//        Ex_NVIC_Config(GPIO_E,4,FTIR);                 //&#207;&#194;&#189;μ&#209;&#216;′¥·¢
//         Ex_NVIC_Config(GPIO_A,0,RTIR);                  //é&#207;éy&#209;&#216;′¥·¢
//        MY_NVIC_Init(3,2,EXTI2_IRQn,2);                //&#199;à&#213;&#188;3£&#172;×óó&#197;&#207;è&#188;&#182;2£&#172;×é2
//        MY_NVIC_Init(2,2,EXTI3_IRQn,2);                //&#199;à&#213;&#188;2£&#172;×óó&#197;&#207;è&#188;&#182;2£&#172;×é2           
//        MY_NVIC_Init(1,2,EXTI4_IRQn,2);                //&#199;à&#213;&#188;1£&#172;×óó&#197;&#207;è&#188;&#182;2£&#172;×é2           
        MY_NVIC_Init(0,2,EXTI4_IRQn,2);                //&#199;à&#213;&#188;0£&#172;×óó&#197;&#207;è&#188;&#182;2£&#172;×é2           
}
还有的就是io的初始化这没什么好贴的吧,其他就是原子的例程部分我没动。

一周热门 更多>