查看: 5660|回复: 7

[S32] S32K144使用SysTick中断延时,但是进不去中断

[复制链接]

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2023-4-4
发表于 2021-11-18 21:19:31 | 显示全部楼层 |阅读模式
QQ截图20211118211816.jpg 在中断里打了断点但是一直进不去,求助!

想写延时函数但是进不去中断,也尝试改过优化但是得不到解决
我知道答案 目前已有7人回答
回复

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 20:19
  • 签到天数: 1849 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112633
    最后登录
    2025-7-22
    发表于 2021-11-19 13:58:44 | 显示全部楼层
    你可以参考官方的写法啊:
    首先是初始化:
    1. //直接调用:
    2. SysTick_Config(SystemCoreClock / 1000U);       
    复制代码


    然后是中断和延时:
    1. volatile uint32_t g_systickCounter;

    2. void SysTick_Handler(void)
    3. {
    4.     if (g_systickCounter != 0U)
    5.     {
    6.         g_systickCounter--;
    7.     }
    8. }

    9. void SysTick_DelayTicks(uint32_t n)
    10. {
    11.     g_systickCounter = n;
    12.     while (g_systickCounter != 0U)
    13.     {
    14.     }
    15. }
    复制代码
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    96
    最后登录
    2023-4-4
     楼主| 发表于 2021-11-19 15:09:01 | 显示全部楼层
    stm1024 发表于 2021-11-19 13:58
    你可以参考官方的写法啊:
    首先是初始化:

    我看了下,第一行代码那的SystemCoreClock似乎是开始默认设置的预设值,如果我自己配置了时钟,是不是应该更新这个值,再直接调用呀
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 20:19
  • 签到天数: 1849 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112633
    最后登录
    2025-7-22
    发表于 2021-11-19 15:15:50 | 显示全部楼层
    㴦 发表于 2021-11-19 15:09
    我看了下,第一行代码那的SystemCoreClock似乎是开始默认设置的预设值,如果我自己配置了时钟,是不是应 ...

    是的,通常在SystemInit函数中有更新系统设置,或者有些芯片带有void SystemCoreClockUpdate (void) 类似的函数更新系统频率,再或者是使用PLL配置不同系统频率后也要更新。当然如果你能够很确定自己的系统时钟值,直接填常数也是可以的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 20:19
  • 签到天数: 1849 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112633
    最后登录
    2025-7-22
    发表于 2021-11-19 15:16:54 | 显示全部楼层
    还有就是你的handler里面怎么是递增呢?systick那个是递减到0产生中断吧?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    96
    最后登录
    2023-4-4
     楼主| 发表于 2021-11-19 15:21:06 | 显示全部楼层
    stm1024 发表于 2021-11-19 15:16
    还有就是你的handler里面怎么是递增呢?systick那个是递减到0产生中断吧?

    是的递减,但是进不去中断现在是
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    96
    最后登录
    2023-4-4
     楼主| 发表于 2021-11-19 15:21:45 | 显示全部楼层
    stm1024 发表于 2021-11-19 15:15
    是的,通常在SystemInit函数中有更新系统设置,或者有些芯片带有void SystemCoreClockUpdate (void) 类似 ...

    好的谢谢你啦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    96
    最后登录
    2023-4-4
     楼主| 发表于 2021-11-19 15:25:01 | 显示全部楼层
    stm1024 发表于 2021-11-19 13:58
    你可以参考官方的写法啊:
    首先是初始化:

    我尝试了把我原来代码中的RVR寄存器中的值改成常数,就能进去中断了,应该是我core_clk的值获取的不正确吧
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-23 10:55 , Processed in 0.102465 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表