您的位置 首页 测评

STM8L外部中止 为何 死循环 寄存器操作

STM8L系列单片机是ST公司推出的低功耗单片机,与STM8S系列相比功耗降低了很多,但内部结构也删减了很多,使用时一定要仔细阅读手册…

  STM8L 系列单片机是 ST公司推出的低功耗单片机,与STM8S系列比较功耗降低了许多,但内部结构也删减了许多,运用时一定要仔细阅读手册。 这是第一次运用STM8,完成功用不是很杂乱就没想研讨库函数,预备直接操控寄存器操作,没想到自己 由于中止问题纠结了大半天。

外部中止中这一点很不同, STM8S主动铲除外部中止,而STM8L是需求软件铲除, 铲除标志位的寄存器依据设置而不同,下面有阐明。

下面以STM8L外部中止 PB1为例 阐明外部中止 寄存器操作

设置外部中止有下面几步:

第一步、设置IO口为中止输入 经过设置 (PB_DDR = 0X00;PB_CR1 = 0X02;PB_CR2 = 0X02;)

第二步、设置中止触发方法(00: Falling edge and low level;01: Rising edge only;10: Falling edge only;11: Rising and falling edge)

第三步、更改中止向量表 (stm8_interrupt_vector.c 文件中)

第四步、编写中止处理函数,记住在函数晒干铲除中止


第一步、设置IO口为中止输入

PB_DDR = 0X00; // 输入

 PB_CR1 = 0X02; // 0_0010

 PB_CR2 = 0X02; // 0_0010 CR1与CR2结合确定为 上拉外部中止输入

第二步、设置中止触发方法STM8L中 PB 与 PD 端口比较特别能够有两种触发形式

 EXTI_CONF= 0x00;

这两种触发形式经过寄存器EXTI_CONF 进行设置

第一种方法 与A,C port相同经过下面两个寄存器设置触发形式 设置 寄存器EXTI_CONF[0]为0 ,一共Port B[3:0] 运用第一种方法(我在此命名为一般方法)

  EXTI_CR1 寄存器设置Port A, B, C and/or D external interrupts 的 3、2、1、0引脚

  EXTI_CR2 寄存器设置Port A, B, C and/or D external interrupts 的 7、6、5、4引脚

第二种方法 经过EXTI_CR3寄存器设置触发形式EXTI_CONF[0]为1,一共Port B[3:0] 运用第二种方法(我在此命名为特别方法)

  EXTI_CR3 寄存器的 [3:2] 位 设置 端口D 的触发形式

  EXTI_CR3 寄存器的 [1:0] 位 设置 端口B 的触发形式

第三步、更改中止向量表

  {0x82, KEY_Interrupt}, /* irq9 */

  PB1一般形式中止向量号为9 ,其间KEY_Interrupt 能够依据实践命名, 只要和后边写的中止函数名共同就能够。

  为什么挑选为9 看下面的图片就知道了。

第四步、编写中止处理函数

  @far @interrupt void KEY_Interrupt(void)
  {
    LED1 = !LED1;
    //EXTI_SR2 = 0x01; // 假如设置为 特别形式 经过此寄存器铲除 中止标志位
    EXTI_SR1 =0x02; // 假如设置为 一般形式经过此寄存器铲除 中止标志位

  }

在这一过程中有两点 阐明:

1、假如中止碑文函数不想在stm8_interrupt_vector.c 文件中编写,需求在stm8_interrupt_vector.c 文件中增加这样一个函数

  @far @interrupt void KEY_Interrupt(void);

2、EXTI_SR2 = 0x01; // 假如设置为 特别形式 经过此寄存器铲除 中止标志位
  EXTI_SR1 =0x02; // 假如设置为 一般形式经过此寄存器铲除 中止标志位


中止向量等级:

经过下面的第一个表格 能够知道 假如咱们用一般中止形式 端口B1的中止 归于 EXTI1 (假如是PB2 归于EXTI2), 特别形式 端口B的中止归于EXTIB and EXTID,

知道这点 后咱们结合手册中的中止向量 表就知道 咱们应该在哪个方位写中止 进口函数名了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/263888.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部