STM8S903K3T6C基于ST Visual Develop开发外部中断示例
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM8S903K3T6C基于ST Visual Develop开发外部中断示例相关的知识,希望对你有一定的参考价值。
STM8S903K3T6C基于ST Visual Develop开发外部中断示例
-
📺工程配置过程演示:(不包含中断向量相关内容)
📚外部中断
- 📑STM8 I/O 口引脚配置表
- 📖外部中断端口以及引脚
- 📜外部中断向量表
- ✅对应的是
stm8_interrupt_vector.c
文件中的代码:
struct interrupt_vector const _vectab[] =
0x82, (interrupt_handler_t)_stext, /* reset */
0x82, NonHandledInterrupt, /* trap */
0x82, NonHandledInterrupt, /* irq0 TLI引脚中断-》PD7引脚*/
0x82, NonHandledInterrupt, /* irq1 */
0x82, NonHandledInterrupt, /* irq2 */
0x82, NonHandledInterrupt, /* irq3 PA端口*/
0x82, NonHandledInterrupt, /* irq4 PB端口*/
0x82, PC_Out_Int, /* irq5 PC端口*/
0x82, NonHandledInterrupt, /* irq6 PD端口*/
0x82, NonHandledInterrupt, /* irq7 PE端口*/
0x82, NonHandledInterrupt, /* irq8 */
0x82, NonHandledInterrupt, /* irq9 */
0x82, NonHandledInterrupt, /* irq10 */
0x82, NonHandledInterrupt, /* irq11 */
0x82, NonHandledInterrupt, /* irq12 */
0x82, NonHandledInterrupt, /* irq13 */
0x82, NonHandledInterrupt, /* irq14 */
0x82, NonHandledInterrupt, /* irq15 */
0x82, NonHandledInterrupt, /* irq16 */
0x82, NonHandledInterrupt, /* irq17 */
0x82, NonHandledInterrupt, /* irq18 */
0x82, NonHandledInterrupt, /* irq19 */
0x82, NonHandledInterrupt, /* irq20 */
0x82, NonHandledInterrupt, /* irq21 */
0x82, NonHandledInterrupt, /* irq22 */
0x82, NonHandledInterrupt, /* irq23 */
0x82, NonHandledInterrupt, /* irq24 */
0x82, NonHandledInterrupt, /* irq25 */
0x82, NonHandledInterrupt, /* irq26 */
0x82, NonHandledInterrupt, /* irq27 */
0x82, NonHandledInterrupt, /* irq28 */
0x82, NonHandledInterrupt, /* irq29 */
;
🌼按键中断示例代码
📝实现的功能;当PC1按键按下时,PD2引脚上的LED灯状态翻转,当PC5按键按下时,PD7引脚上的LED灯状态翻转。
#include"stm8s903k.h"
_Bool LED1 @PD_ODR:7;
_Bool LED2 @PD_ODR:2;
_Bool but1 @PC_IDR:1;
_Bool but2 @PC_IDR:5;
void GPIO_Init(void)
PD_DDR |= 0xFF;//推挽输出
PD_CR1 |= 0xFF;
PC_DDR = 0x00;
PC_CR1 |= 0xFF;//PC1和PC5中断上拉输入
PC_CR2 |= 0xFF;
void main()
_asm("sim"); //disable all interrupt
GPIO_Init();
EXTI_CR1 = 0x20; //开启PC口,0x20下降沿触发
_asm("rim"); //enable all interrupt
LED1 = 0;
LED2 = 0;
while(1);
//@far @interrupt void TLI_Int(void)
//
// LED1 = !LED1;
// while(1);
//
@far @interrupt void PC_Out_Int(void)
if(but1 == 0)
LED2 = !LED2;
if(but2 == 0)
LED1 = !LED1;
- 🌻
stm8_interrupt_vector.c
文件中的代码:
/* 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 */
//@far @interrupt void TLI_Int(void);
extern @far @interrupt void PC_Out_Int(void);
//@far @interrupt void PC5_Out_Int(void);
struct interrupt_vector const _vectab[] =
0x82, (interrupt_handler_t)_stext, /* reset */
0x82, NonHandledInterrupt, /* trap */
0x82, NonHandledInterrupt, /* irq0 TLI_Int*/
0x82, NonHandledInterrupt, /* irq1 */
0x82, NonHandledInterrupt, /* irq2 */
0x82, NonHandledInterrupt, /* irq3 */
0x82, NonHandledInterrupt, /* irq4 */
0x82, PC_Out_Int, /* irq5 */
0x82, NonHandledInterrupt, /* irq6 */
0x82, NonHandledInterrupt, /* irq7 */
0x82, NonHandledInterrupt, /* irq8 */
0x82, NonHandledInterrupt, /* irq9 */
0x82, NonHandledInterrupt, /* irq10 */
0x82, NonHandledInterrupt, /* irq11 */
0x82, NonHandledInterrupt, /* irq12 */
0x82, NonHandledInterrupt, /* irq13 */
0x82, NonHandledInterrupt, /* irq14 */
0x82, NonHandledInterrupt, /* irq15 */
0x82, NonHandledInterrupt, /* irq16 */
0x82, NonHandledInterrupt, /* irq17 */
0x82, NonHandledInterrupt, /* irq18 */
0x82, NonHandledInterrupt, /* irq19 */
0x82, NonHandledInterrupt, /* irq20 */
0x82, NonHandledInterrupt, /* irq21 */
0x82, NonHandledInterrupt, /* irq22 */
0x82, NonHandledInterrupt, /* irq23 */
0x82, NonHandledInterrupt, /* irq24 */
0x82, NonHandledInterrupt, /* irq25 */
0x82, NonHandledInterrupt, /* irq26 */
0x82, NonHandledInterrupt, /* irq27 */
0x82, NonHandledInterrupt, /* irq28 */
0x82, NonHandledInterrupt, /* irq29 */
;
以上是关于STM8S903K3T6C基于ST Visual Develop开发外部中断示例的主要内容,如果未能解决你的问题,请参考以下文章
STM8S903K3T6C基于ST Visual Develop开发输入输出按键检测示例
STM8S903K3基于ST Visual Develop开发串口接收中断示例