14回答

0收藏

[评测分享] 【SAMV71精讲精练系列】3、System Tick详解

 

#板卡评测 #板卡评测 11233 人阅读 | 14 人回复 | 2015-11-14

本帖最后由 _烟酒僧_ 于 2015-11-14 23:34 编辑

下午出去放松了一下,晚上继续学习SAMV71

科学家研究发现,一个人对事物认知的最高程度,是能用语言或者文字,
把它的逻辑详尽透彻、有条理地表述出来。
别说这个真有道理,很多东西,你感觉自己明白了,但是说出来可能完全
是两回事,甚至听者也觉得不知所谓,那说明你对这个东西的认知还没有
达到透彻的程度。

所以本次学习贴,尽量详尽一点,很显然我也有这个需求来把SAMV71这个
东西了解得更透彻。这有别于之前连载的XMEGA学习教程,XMEGA是我拿来
做过几个项目的芯片,讲太细于己来说绝对是浪费时间。而SAMV71是一款
全新的芯片,所以权当为以后的项目未雨绸缪,储备点知识,与各位共同进步。

稍微谈谈前几贴的学习体会,很大的感触是,太熟悉了!有些貌似新鲜的
术语,仿佛以前便使用过一般,并且,因为这款IC的性能太强劲了,外设之
丰富让人叹为观止,所以应用于实际项目上,会有更大的灵活度和操作
空间。小资源的片子在时间和空间两个维度之间精雕细琢是太常见的事情,
而这个如果不上系统,简直就可以让你随便嗨……呵呵

但是,提醒一点,作为码农,切忌因为硬件强悍而随意写出超烂的乐色!
否则以后绝对可是要吃暗亏的。

扯远了,正式步入正题。

单片机新手,特别喜欢使用指令延时,实际上很多时候这是拖慢MCU效率
的一个很大的元凶。稍有经验的,很容易想到,用定时器来做一个标记,
显然这要高明得多,避免了MCU的“死等”。

SAMV71更是把这样一个算作是技巧性的处理,提升到了另外一个高度,
把它做成了一个单独的中断源,只要你愿意,这个Tick将会一直存活在
你程序的生命周期里!

解析一下如下库函数 - 配置系统TICK
__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 */
}
调用这个函数便完成了系统TICK配置,
如果我们想要配置系统TICK每毫秒中断一次,只需要像如下这样调用即可;SysTick_Config(sysclk_get_cpu_hz() / 1000);
然后,我们自然需要在中断函数里作一个毫秒计数,如下
volatile uint32_t systemTickCounter;
void SysTick_Handler(void)
{
        systemTickCounter++;
}

顺便提醒一下volatile这个关键字,我建议你加上,否则……你懂得!
只有严密的程序才能达到理想的效果,任何寄希望于编译器或者IDE优化的想法都是在给自己“埋地雷”!

程序烧录进去之后的效果如下


main.c全部测试代码:
游客,如果您要查看本帖隐藏内容请回复









(END)

-认真做事的人最可爱-
-想学习和交流技术的同行可以进我的群-
-单片机嵌入式技术群 162388414-
分享到:
回复

使用道具 举报

回答|共 14 个

倒序浏览

沙发

肽宰1

发表于 2015-11-15 09:37:18 | 只看该作者

还不错
板凳

liujincai

发表于 2015-11-16 10:08:18 | 只看该作者

顶顶顶
地板

奋斗哥

发表于 2015-11-16 10:10:25 | 只看该作者

提醒一点,作为码农,切忌因为硬件强悍而随意写出超烂的乐色!
5#

肽宰1

发表于 2015-11-16 10:13:21 | 只看该作者

多谢分享
6#

wangbw2015

发表于 2015-11-17 18:12:33 | 只看该作者

只有严密的程序才能达到理想的效果
7#

_LX_

发表于 2016-5-12 14:34:02 | 只看该作者

学习一下啊
8#

hellome11

发表于 2016-5-21 20:47:45 | 只看该作者

非常棒!thanks!
9#

at89c51cc01

发表于 2017-5-12 15:36:33 | 只看该作者

参考一下,学习。
您需要登录后才可以回帖 注册/登录

本版积分规则

开发工程师
997 积分
39 主题
+ 关注
热门推荐
关闭

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