OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4415|回复: 10

用systick定时器实现1ms中断,怎么实现?

[复制链接]

15

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2016-4-22
在线时间
39 小时
发表于 2016-6-7 17:30:33 | 显示全部楼层 |阅读模式
1金钱

最佳答案

查看完整内容[请看2#楼]

void SysTick_Init(void) { /* SystemFrequency / 1000 1ms中断一次 * SystemFrequency / 10000 100us中断一次 * SystemFrequency / 100000 10us中断一次 * SystemFrequency / 1000000 1us中断一次 */ if (SysTick_Config(SystemCoreClock / 1000)) // ST3.5.0库版本 { /* Capture error */ while ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1154
注册时间
2014-11-9
在线时间
228 小时
发表于 2016-6-7 17:30:34 | 显示全部楼层
本帖最后由 黄伟达 于 2016-6-8 13:58 编辑

void SysTick_Init(void)
{
        /* SystemFrequency / 1000    1ms中断一次
         * SystemFrequency / 10000          100us中断一次
         * SystemFrequency / 100000  10us中断一次
         * SystemFrequency / 1000000 1us中断一次
         */
        if (SysTick_Config(SystemCoreClock / 1000))        // ST3.5.0库版本
        {
                /* Capture error */
                while (1);
        }
                  
//        SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;// 关闭滴答定时器
               
        SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;// 使能滴答定时器  
        
}
时钟72M
回复

使用道具 举报

15

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2016-4-22
在线时间
39 小时
 楼主| 发表于 2016-6-7 17:32:07 | 显示全部楼层
具体systick要选择哪种时钟源?systick中断优先级要怎么更改?
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2016-6-8 10:27:51 | 显示全部楼层
具体可以参考下原子的开发板systick历程章节!!!
回复

使用道具 举报

11

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1154
注册时间
2014-11-9
在线时间
228 小时
发表于 2016-6-8 13:57:18 | 显示全部楼层
void SysTick_Handler(void)
{
//加入你的中断处理程序                        
}
回复

使用道具 举报

15

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2016-4-22
在线时间
39 小时
 楼主| 发表于 2016-6-8 15:06:29 | 显示全部楼层
黄伟达 发表于 2016-6-8 13:56
void SysTick_Init(void)
{
        /* SystemFrequency / 1000    1ms中断一次

我这么做的,不精确,你知道systick的中断优先级怎么改么??
回复

使用道具 举报

11

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1154
注册时间
2014-11-9
在线时间
228 小时
发表于 2016-6-8 15:13:46 | 显示全部楼层
17791816848 发表于 2016-6-8 15:06
我这么做的,不精确,你知道systick的中断优先级怎么改么??

NVIC_SetPriority(SysTick_IRQn, x); 试试这个
回复

使用道具 举报

11

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1154
注册时间
2014-11-9
在线时间
228 小时
发表于 2016-6-8 15:14:17 | 显示全部楼层
17791816848 发表于 2016-6-8 15:06
我这么做的,不精确,你知道systick的中断优先级怎么改么??

你的中断处理程序的时间要小于1ms
回复

使用道具 举报

15

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2016-4-22
在线时间
39 小时
 楼主| 发表于 2016-6-8 15:19:51 | 显示全部楼层
黄伟达 发表于 2016-6-8 15:13
NVIC_SetPriority(SysTick_IRQn, x); 试试这个

还有请问一下啊,初始化里面不用选择systick时钟源么?SysTick_CLKSourceConfig();这个函数??
回复

使用道具 举报

15

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2016-4-22
在线时间
39 小时
 楼主| 发表于 2016-6-8 15:25:40 | 显示全部楼层
17791816848 发表于 2016-6-8 15:19
还有请问一下啊,初始化里面不用选择systick时钟源么?SysTick_CLKSourceConfig();这个函数??

NVIC_SetPriority(SysTick_IRQn, 0x00);这样可以不??
回复

使用道具 举报

11

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1154
注册时间
2014-11-9
在线时间
228 小时
发表于 2016-6-8 15:57:29 | 显示全部楼层
你看的是函数库吧,那个手册有点老了,3.5版本的库系统定时器只有一个函数,SysTick_Config(SystemCoreClock / 1000)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 10:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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