MSPM0学习,systick的配置以及中断

前言

如果您未看过笔者之前写的"第一步配置"和"MSPM0教程之调用SYSCONFIG以及配置GPIO输出和输入",强烈建议您将这两篇先看了,以免出现配置错误,如果您以及完成了SYSCONFIG的配置,请继续往下看

在SYSCONFIG中配置滴答定时器,以及中断配置

image-20230604203426728

根据自己需要的技术频率来设置分频系数Period,1ms的频率是应用最多的,MSPM0L的主频为32M,故分频系数设置为32000,同时我们开启中断,并将滴答定时器的中断优先级设置为最低,这也是为了我们后续方便移植RTOS

MSPM0中断策略解读

在官方用户手册中,介绍了MSPM0的中断策略,可以看到TI给所有的中断和异常都分配到了事件组里

MSPM0把CPU中断,DMA触发,以及外设触发外设,都统称为事件(Event)触发源称为事件发布者(Event Publisher),相应中断的外设被称为事件订阅者(Event Subscriber)。

Event的传播路由分为三类,第一个是静态事件路由(Static Event Route),就是指的事件发布者(Event Publisher)到事件订阅者(Event Subscriber)是固定路径,不可配置,例如外设到CPU的中断,中断标志位需要手动清除。

以上文段来自创易栈MSPM0L1306开发板教程3 - GPIO的中断

image-20230604210255491

第二种称为DMA事件路由(DMA Event Route),这个是外设与DMA的之间的点对点连接,路径不可配置,中断标志会自动清除

image-20230604210401223

第三种称为通用事件路由(Generic Event Route),就是外设到外设,外设到DMA,CPU之间的可配置连接,例如定时器触发ADC,IO触发IO,这些都是通用事件路由,中断标志会自动清除。

特别说明的是,在通用事件路由中,Event Publisher是一个,Event Subscriber最多支持到两个,也就是说,一个事件可以触发最多两个动作,例如一个按键可以触发两个GPIO进行翻转。

image-20230604210444349

以上文段来自创易栈MSPM0L1306开发板教程3 - GPIO的中断

systick中断的配置

在SYSCONFIG配置好后,我们进行编译,可以看到生成了systick的配置函数

image-20230604211118385

接下来我们来到startup_mspm0l1306_uvision.s(即启动文件)中,可以看到对应的中断已经被映射到中断向量表里了,我们直接复制对应的函数名,然后编写中断函数即可


unsigned int utick = 0;//滴答定时器中断计数

void SysTick_Handler(void)

{

  SysTick->CTRL &= ~(1 << 16); /*清除滴答定时器中断标志位*/

  utick++;//滴答定时器中断计数

}

编写一个delay_ms函数

void delay_ms(unsigned int ms)

{

unsigned int tick = utick;

while(utick < (tick + ms));

}

在main中编写验证代码

extern unsigned int  utick;

int main(void)

{

  SYSCFG_DL_init();

  while (1) {

    delay_ms(1000);

    DL_GPIO_togglePins(GPIO_GRP_0_PORT,GPIO_GRP_0_LED_PIN);

  }

}


DL_GPIO_togglePins函数的定义如下图所示

image-20230604214502351

在debug中,我们看到程序成功进入了中断函数内,说明配置成功

image-20230604215136988

注意事项

当我们把keil的优化等级开到o1(魔术棒-C/C++-optimization)时,会发现mian里面的主循环代码都未链接(即不能打断点,,可以通过这个来简单判断程序是否被编译器链接),如图所示

image-20230604215439200

将优化等级调成O0以后,main能被正常链接

image-20230604215758356

遗憾的是,下调优化等级后,代码大小几乎翻了一倍,这对于flash大小仅有32K的MSPM0L1306来说,已经用了相当一部分了

image-20230604215730999

转载请标明出处

By QDU_jiongsheng

posted @ 2023-06-14 16:21  jiongsheng  阅读(677)  评论(0)    收藏  举报