zjk200 发表于 2011-5-3 21:32:47

关于STM8LS152c6的中断问题

 
麻烦大家帮帮忙,我用的是编译器IAR,使用的是STM8L152C6单片机,开发板PD4,PD5,PD6接发光二极管低电平有效,写的是PB0口中断,设置为上升沿触发,其代码如下,出现的问题是:直接接上个导线,就直接进入中断,经过查阅资料说要接上下拉电阻于是也接上了,但是发现只要一个小小的电平变化就能进入中断,这一电平差不多是零点几伏左右,而我的目的是要达到差不多3V左右才进入中断,有哪位大虾知道的,麻烦帮我下,不甚感激。
#include
#include
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long
#define LED1_H()    (PD_ODR |= 0x40)
#define LED1_L()    (PD_ODR &= ~0x40)
#define LED2_H()    (PD_ODR |= 0x20)
#define LED2_L()    (PD_ODR &= ~0x20)
#define LED3_H()    (PD_ODR |= 0x10)
#define LED3_L()    (PD_ODR &= ~0x10)
void IO_Init();//端口初始化
void Clk_Config(void)
{
    CLK_CKDIVR_CKM = 0;                 //系统时钟1分频
    while(!(CLK_ICKCR & 0x02));         //等待HSI准备好    
}
void main(void)
{
  Clk_Config();
  IO_Init();
  __enable_interrupt();
  while(1)
  {  
  }
}
void IO_Init()
{
  PD_DDR_DDR6 =1;//PD.6为输出
  PD_DDR_DDR5 =1;//PD.5为输出
  PD_DDR_DDR4 =1;//PD.4为输出
 
  PD_CR1_C16 = 1;//PD.6推挽输出
  PD_CR1_C15 = 1;//PD.5推挽输出
  PD_CR1_C14 = 1;//PD.4推挽输出
  LED1_H();
  LED2_H();
  LED3_H();
 
  PB_DDR &=~0x01;//PB.0口为输入.
  PB_CR1 &=0x00;//浮空输入
  PB_CR2 =0x01;//PB0外部中断使能
  EXTI_CR1_P0IS =1;//PB0上升沿沿中断
  LED2_H();
}
#pragma vector =EXTI0_vector
__interrupt __root void PB0(void)
{
   LED1_L();
   LED2_L();
   LED3_L();
}

wyzamazon 发表于 2011-7-12 08:05:15

RE:关于STM8LS152c6的中断问题

路过看看 请高手:lol

hui235 发表于 2011-7-19 23:58:09

RE:关于STM8LS152c6的中断问题

可以将逻辑反过来试试。
因为判断是不是0V比判断3V简单,所以,你可以改成下降沿触发,

linhui_lh-10571 发表于 2011-8-5 17:05:48

RE:关于STM8LS152c6的中断问题

这个是没有问题的吧,本来0.几v就可以触发中断,认为是高电平,这个是电平标准的问题吧,可以像楼上那样,改成低电平的。

ninglihong 发表于 2011-8-5 18:05:54

RE:关于STM8LS152c6的中断问题

:),看看!
页: [1]
查看完整版本: 关于STM8LS152c6的中断问题