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

STM8S103外部中断问题

[复制链接]
zqy983779843 提问时间:2015-1-9 09:35 /
下面程序当用外部触发按键触发外部中断工作正常,但是当接一个霍尔传感器输出去触发时,只要接上霍尔传感器(在示波器上看没有任何电平变化),不管是否有触发都一直在中断。而且这时全局中断都还没有开启。请教大家是否也遇到同样的问题?



void SensorIn_conf(void)

{
   PB_DDR_DDR4  = 0;          /* 设置数据方向寄存器 1为输出,0为输入--查看STM8寄存器.pdf P87 */         
   PB_CR1_C14 = 0;            /* 设置0 悬浮输入  1 上拉输入--查看STM8寄存器.pdf P88 */        
   //PB_CR2_C24 = 1;            /* 设置PB4中断输入 STM8寄存器.pdf P89 */  
   PB_CR2_C24 = 0;            /* 设置PB4悬浮输入 STM8寄存器.pdf P89 */  
   
   PB_DDR_DDR5  = 0;          /* 设置数据方向寄存器 1为输出,0为输入--查看STM8寄存器.pdf P87 */         
   PB_CR1_C15 = 0;            /* 设置0 悬浮输入  1 上拉输入--查看STM8寄存器.pdf P88 */           
   PB_CR2_C25 = 1;            /* PB4中断输入 STM8寄存器.pdf P89 */      
   //PB_CR2_C25 = 0;            /* PB4悬浮输入 STM8寄存器.pdf P89 */      
  
   EXTI_CR1 &= (uint8_t)(~MASK_EXTI_CR1_PBIS);     //#define MASK_EXTI_CR1_PBIS       0x0C
   //EXTI_CR1 |= (uint8_t)((uint8_t)(0x03) << 4);   /*设置为上升沿和下降沿触发触发中断*/
   EXTI_CR1 |= (uint8_t)((uint8_t)(0x01) << 4);   /*设置为上升沿和下降沿触发触发中断*/
   //EXTI_CR1 = 0x0c;
}
/*
00:下降沿和低电平触发
01:仅上升沿触发
10:仅下降沿触发
11:上升沿和下降沿触发
*/
#pragma vector=6
__interrupt void EXTI_PORTB_IRQHandler(void)
{
   //PD_ODR_ODR2 = ~PD_ODR_ODR2;  
  PD_ODR_ODR2 = 1;  
}


int main(void)
{
   disableInterrupts();        //关中断
    SensorIn_conf();        //
   driver_ini();            //在这设置断点,只要打开了外部中断(SensorIn_conf();)程序就一直执行(EXTI_PORTB_IRQHandler),跑不到这里
   sys_ini();
   enableInterrupts();      //开中断

收藏 评论4 发布时间:2015-1-9 09:35

举报

4个回答
默默前行 回答时间:2015-1-9 12:55:10
借帖同求!
zqy983779843 回答时间:2015-1-9 13:40:13

你也遇到相同的问题?
holts1 回答时间:2015-1-9 15:39:36
是不是中断重入了
jcrorxp 回答时间:2015-1-9 15:46:24
/**
  * @brief External Interrupt PORTB Interrupt routine.
  * @param  None
  * @retval None
  */
INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4)
{}

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