STM8S---外部中断应用之长按键识别

本文详细介绍了STM8单片机中断指令的使用,包括开总中断、禁止中断、进入停机模式、中断返回和等待中断等,并以实际案例展示了外部中断长按键识别的相关配置和测试代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM8常用中断指令

  • 开总中断
    • _asm(“rim”);
  • 禁止中断
    • _asm(“sim”);
  • 进入停机模式
    • _asm(“halt”);
  • 中断返回
    • _asm(“iret”);
  • 等待中断
    • _asm(“wfi”);
  • 软件中断
    • _asm(“trap”);

STM8S常用中断映射

中断映射表

如使用中断函数时,可以通过在上图中查找相对应的中断向量号,而中断函数的名字可以自定义

/*  BASIC INTERRUPT VECTOR TABLE FOR STM8 devices
 *  Copyright (c) 2007 STMicroelectronics
 */

typedef void @far (*interrupt_handler_t)(void);

struct interrupt_vector {
    unsigned char interrupt_instruction;
    interrupt_handler_t interrupt_handler;
};

@far @interrupt void NonHandledInterrupt (void)
{
    /* in order to detect unexpected events during development, 
       it is recommended to set a breakpoint on the following instruction
    */
    return;
}

extern void _stext();     /* startup routine */
extern @far @interrupt void EXTI2_Hand_Fun(void);
extern @far @interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void);


struct interrupt_vector const _vectab[] = {
    {
  
  0x82, (interrupt_handler_t)_stext}, /* reset */
    {
  
  0x82, NonHandledInterrupt}, /* trap  */
    {
  
  0x82, NonHandledInterrupt}, /* irq0  */
    {
  
  0x82, NonHandledInterrupt}, /* irq1  */
    {
  
  0x82, NonHandledInterrupt}, /* irq2  */
    {
  
  0x82, NonHandledInte
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值