微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 小弟在学stm8,求大神,我写的程序外部中断进入不了,帮我看看啊,单片机是stm8s105k4.

小弟在学stm8,求大神,我写的程序外部中断进入不了,帮我看看啊,单片机是stm8s105k4.

时间:10-02 整理:3721RD 点击:
#include "STM8S105K.h"
void run(void);
void GPIO_Init(void);
void test(void);
void InitEXTI2(void);
void InitEXTI4(void);
int a=0,b=0,c=0;
void delay(unsigned int t)
{
        while(t--);
}

void GPIO_Init()
{
//        _asm("sim");
        PD_DDR = 0x00;
        PD_CR1 = 0x00;
        PD_CR2 = 0x00;  //定义PD口为悬浮输入口
        PC_DDR = 0x18;
        PC_CR1 = 0x1c;
        PC_CR2 = 0x04;
        PE_DDR = 0x00;
        PE_CR1 = 0x20;
        PE_CR2 = 0x20;
//        _asm("rim");
}


void run()
{
        if((PD_IDR & 0x08) == 0x08)
  {
                delay(5);
                if((PD_IDR & 0x08) == 0x08)
                {
                        if(b <= 1080)
                        {
                          PC_ODR |= 0x08;
                  }
                }
        }
        else
        {
                PC_ODR &= 0xf7;
        }
       
        if((PD_IDR & 0x10) == 0x10)
        {
                delay(5);
                if((PD_IDR & 0x10) == 0x10)
                {
                        if(a <= 1080)
                        {
                          PC_ODR |= 0x10;
                  }
                }
        }
        else
        {
                PC_ODR &= 0xef;
        }
}

void InitEXTI2(void)
{
        EXTI_CR1 = 0x20;
}

void InitEXTI4(void)
{
        EXTI_CR2 = 0x01;
}



@far @Interrupt void EXTI4_IRQHandler1(void)
{
        _asm("sim");
        b = b+1;
  c = 1;
        if(b == 1080)
  {
                a = 0;
                PC_ODR &= 0xef;
                PC_ODR &= 0xf7;
               
  }       
        _asm("rim");
}



@far @interrupt void EXTI2_IRQHandler(void)
{
        _asm("sim");
        a = a+1;
        c = 1;
        if(a == 1080)
  {
                b = 0;
                PC_ODR &= 0xef;
                PC_ODR &= 0xf7;
  }       
        _asm("rim");
}

main()
{
        _asm("sim");
        GPIO_Init();
        InitEXTI2();
        InitEXTI4();
        _asm("rim");
  while (1)
  {
                run();
                delay(20);
        }
}

求大神告知为什么外部中断无法进入啊

工程建立的有问题,程序中断函数写错了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top