麻烦大家帮帮忙,我用的是编译器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(); } |
从零开始操作STM8寄存器(风驰iCreate奉献)
【中文资料】初学STM8库函数的中文帮助软件
绝对经典的中文STM8学习手册,淘宝上学习板资料,友情大放送!
【原创教程】风驰iCreate独家开源STM8 27个例程和10多万字的pdf教程
STM8的LCD1602 4线驱动,为什么不工作
【精华资料】由零开始开发STM8
STM8S 的触摸库是如何在主程序中查询键的呢、
【精华资料】STM8的C语言编程1-14讲完整版
【精品教程】STM8系列单片机入门教程系列
STM8 第一次进中断不准【悬赏问答】
RE:关于STM8LS152c6的中断问题
RE:关于STM8LS152c6的中断问题
因为判断是不是0V比判断3V简单,所以,你可以改成下降沿触发,
RE:关于STM8LS152c6的中断问题
RE:关于STM8LS152c6的中断问题