查看: 4326|回复: 6

[已解决] KE06芯片的系统嘀嗒定时器中断函数要怎么写

[复制链接]

该用户从未签到

15

主题

40

帖子

0

中级会员

Rank: 3Rank: 3

积分
202
最后登录
2020-7-2
发表于 2018-2-24 17:46:03 | 显示全部楼层 |阅读模式
这是我在主函数中的配置,但是中断进不去,知道会出问题,但是找不到资料,完全不了解这个中断函数要怎么写,求助

最佳答案

你把VECTOR_015重新定义为systick的中断函数

简单写的一个程序

简单写的一个程序
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25456
最后登录
2025-9-4
发表于 2018-2-27 10:03:56 | 显示全部楼层
楼主你好!
给你贴点systick的代码供你参考。
其实中断函数里面啥也不需要写,直接做你想做的事情就可以了,中断函数进入说明定时时间到了。
这里我这边给的例子是定时到了处理LED。

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */
  SysTick->LOAD  = ticks - 1;                                  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}

void SysTick_Handler(void)
{
Board_LED_Toggle(0);
}
/**
* @brief main routine for blinky example
* @return Function should not exit.
*/
int main(void)
{
SystemCoreClockUpdate();
Board_Init();
Board_LED_Set(0, false);
/* Enable SysTick Timer */
SysTick_Config(SystemCoreClock / TICKRATE_HZ);
/* Loop forever */
while (1) {

}
}
具体的systick中断函数名,你需要和你中断向量表中的名称一致。
关于systick的具体内容,你需要到ARM内核文档中去查看。
可以参考下这个帖子:
https://www.nxpic.org.cn/module/forum/thread-598890-1-1.html
三楼的文章。

回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

40

帖子

0

中级会员

Rank: 3Rank: 3

积分
202
最后登录
2020-7-2
 楼主| 发表于 2018-2-27 11:14:48 | 显示全部楼层
小恩GG 发表于 2018-2-27 10:03
楼主你好!
给你贴点systick的代码供你参考。
其实中断函数里面啥也不需要写,直接做你想做的事情就可以了 ...

需不需要在isr.h中对SysTick_Handler进行声明

ISR

ISR
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

40

帖子

0

中级会员

Rank: 3Rank: 3

积分
202
最后登录
2020-7-2
 楼主| 发表于 2018-2-27 11:19:46 | 显示全部楼层
小恩GG 发表于 2018-2-27 10:03
楼主你好!
给你贴点systick的代码供你参考。
其实中断函数里面啥也不需要写,直接做你想做的事情就可以了 ...

另外,感觉你的代码和我一楼发的图没差别啊
回复 支持 反对

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25456
最后登录
2025-9-4
发表于 2018-2-27 12:34:11 | 显示全部楼层
你好我不是大神 发表于 2018-2-27 11:14
需不需要在isr.h中对SysTick_Handler进行声明

如果你中断向量表里面都是VECTOR_xx,当然需要在头文件中定义下,否则无法寻址过去的。
回复 支持 反对

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25456
最后登录
2025-9-4
发表于 2018-2-27 12:50:30 | 显示全部楼层
你把VECTOR_015重新定义为systick的中断函数
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

40

帖子

0

中级会员

Rank: 3Rank: 3

积分
202
最后登录
2020-7-2
 楼主| 发表于 2018-2-27 17:33:34 | 显示全部楼层
小恩GG 发表于 2018-2-27 12:50
你把VECTOR_015重新定义为systick的中断函数

OK,已经解决,要重定义到Systick_Handler
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-9-8 01:08 , Processed in 0.086413 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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