你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM8LS152c6的中断问题

[复制链接]
zjk200 提问时间:2011-5-3 21:32 /
 
麻烦大家帮帮忙,我用的是编译器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();
}
收藏 评论4 发布时间:2011-5-3 21:32

举报

4个回答
wyzamazon 回答时间:2011-7-12 08:05:15

RE:关于STM8LS152c6的中断问题

路过  看看 请高手
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的中断问题

,看看!
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版