【6】STM8——————8S 关于打开与进入中断函数的说明

  1. 简述:
    1. 打开与关闭全局中断:
      1. asm("rim"); //开全局中断
      2. asm("sim");//关全局中断
    2. 用STVD新建工程后,左侧项目目录树中自动增加2个文件main.c,stm8_interrupt_vector.c文件,后者提供了STM8所有的中断入口函数地址表
  2. stm8_interrupt_vector文件的功能:
    1. 中断函数入口
      1. 默认中断函数入口是一样的,需要我们自己找到相应中断修改入口名
    2. 中断函数的声明
      1. 默认@far @interrupt void NonHandledInterrupt (void)
    3. 中断向量表:
      1. P75-8S中文数据手册,或文末
  3. 例程:
    1. 外部中断A的入口函数设置
      1. struct interrupt_vector const _vectab[] =
        1. {{0x82, EXTI0_A}, /* irq3 */};
    2. 声明中断服务函数
      1. extern @far @interrupt void EXTI0_A(void);
    3. 用户中断服务函数
      1. @far @interrupt void EXTI0_A(void ){      return;      }
  4. 中断映射表
  5. 例程
    1. //@far @interrupt void Uart1_RxIrqHandleer(void);
      @far @interrupt void Uart1_RxIrqHandleer(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, NonHandledInterrupt}, /* irq3  */
      	{0x82, NonHandledInterrupt}, /* irq4  */
      	{0x82, NonHandledInterrupt}, /* 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, Uart1_RxIrqHandleer}, /* 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 */
      };
      
      
       /*********************************************************
       * 函数名: @far @interrupt void Uart1_RxIrqHandleer(void)
       * 描述  :串口中断函数
       * 输入  :无
       * 输出  :无
       * 返回  :无 
       * 调用  :内部调用 
       **********************************************************/
      @far @interrupt void Uart1_RxIrqHandleer(void)
      {
      	if(UART1_SR & UART_RXNE)
      	{
      		TxRx_Data = UART1_DR;
      		UART_RxFinishFlag = 1;
      	}
      }

       

  6. 总结:
  7. 工具篇:
    1. 有两种开发工具:
      1. ST Visual Develop Version 4.3.2
      2. IAR
  8. 参考资料:
    1. 风驰开源STM8寄存器版本例程
    2. STM8中文参考手册
    3. STM8数据手册
    4. STM8S库函数中文参考.exe
  9. 程序
    1. 库函数
    2. 寄存器(本笔记依据寄存器编写)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值