0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨MCU RA8系列教程:RA8单片机SysTick使用描述

瑞萨MCU小百科 来源: 瑞萨MCU小百科 2025-03-27 14:27 次阅读
每个Cortex-M内核都集成了一个SysTick模块,那是因为这个模块几乎是单片机项目必备的一个(定时器)功能。
不管是最新的Cortex-M85内核,还是经典的Cortex-M3内核单片机,都集成了SysTick模块。

cm3.h与cm85.h

单片机开发者,接触最多的就是core_cm3.h(core_cm85.h)文件,这里定义了与内核相关的大部分内容,平时我们调用最多也是这里的接口
我们对比一下这两个源文件: e306d75e-0ac0-11f0-9310-92fbcf53809c.png

通过对比源代码,你会直观地发现,cm85比cm3代码行数明显大多了,1943行和4672行。当然,行数多了这么多,左侧红色(差异)部分也比较多。

虽然,左侧“红色”比较多,但大部分都是多出来的行数以及宏定义。仔细对比,其实很多都是一样的,比如我们常用的系统复位函数:e3270bc8-0ac0-11f0-9310-92fbcf53809c.png  
__NO_RETURN __STATIC_INLINEvoid__NVIC_SystemReset(void)
{
__DSB();                             /* Ensure all outstanding memory accesses included
                                   buffered write are completed before reset */
SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |
             (SCB->AIRCR& SCB_AIRCR_PRIGROUP_Msk) |
              SCB_AIRCR_SYSRESETREQ_Msk  );    /* Keep priority group unchanged */
__DSB();                             /* Ensure completion of memory access */


for(;;)                             /* wait until reset */
 {
 __NOP();
 }
}

再比如系统Tick配置函数:

e3452414-0ac0-11f0-9310-92fbcf53809c.png  
__STATIC_INLINEuint32_tSysTick_Config(uint32_tticks)
{
if((ticks -1UL) > SysTick_LOAD_RELOAD_Msk)
 {
 return(1UL);                         /* Reload value impossible */
 }


 SysTick->LOAD = (uint32_t)(ticks -1UL);            /* set reload register */
NVIC_SetPriority(SysTick_IRQn, (1UL<< __NVIC_PRIO_BITS) - 1UL);/* set Priority for Systick Interrupt */
 SysTick->VAL  =0UL;                      /* 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(0UL);                          /* Function successful */
}

其实,你会发现,在Cortext-M3单片机上常用的这些函数接口,基本和CM85一样,这也说明CM85大部分接口向下兼容CM3

RA8单片机SysTick使用描述

这里结合瑞萨RA8D1(Cortex-M85内核)单片机给大家讲述一下SysTick的用法以及描述其源码。

使用e2studio以及fsp软件包

工具自带的软件包其实是最实用的,这里以IO翻转,SysTick延时为例,手把手教大家创建一个工程,并演示效果。

1

打开e2studio创建单片机项目

e365a310-0ac0-11f0-9310-92fbcf53809c.jpge37b9698-0ac0-11f0-9310-92fbcf53809c.png我们命名项目名称为:RA8D1_SysTicke390bbc2-0ac0-11f0-9310-92fbcf53809c.png选择对应芯片型号:R7FA8D1BECe3a83e46-0ac0-11f0-9310-92fbcf53809c.png  e3c5dd66-0ac0-11f0-9310-92fbcf53809c.pnge3e2cd0e-0ac0-11f0-9310-92fbcf53809c.pnge3fb0e6e-0ac0-11f0-9310-92fbcf53809c.pnge4161cae-0ac0-11f0-9310-92fbcf53809c.png    

基本上只需要动动鼠标“点一点”,一个完整的工程就创建好了。

2

配置工程

这里配置一些基础的信息,我们使用一个IO(PA01)来测试一下SysTick延时时间。

e4334aae-0ac0-11f0-9310-92fbcf53809c.png

配置时钟树:

e45427ba-0ac0-11f0-9310-92fbcf53809c.png配置输出Hex文件:e474072e-0ac0-11f0-9310-92fbcf53809c.pnge4974e8c-0ac0-11f0-9310-92fbcf53809c.png  

3

演示

这里只是简单演示Demo,我们添加一个IO翻转来测试SysTick延时时间。

while(1)
{
 R_PORT10->PODR^=1<<(BSP_IO_PORT_10_PIN_01&0xFF);  //PA01亮灭翻转
 R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_MILLISECONDS);  //SysTick延时
}
e4b28e04-0ac0-11f0-9310-92fbcf53809c.png  这个是1ms翻转,SysTick延时误差还是比较小,相对1ms来说误差可以忽略(采样频率100KHz看不出来误差)。e4d57a18-0ac0-11f0-9310-92fbcf53809c.png  采样频率为100MHz,其实还是看得出来有点误差。当然,这个误差是晶振、软件等多种因素影响的。还有,us级别的误差,相对ms可以忽略。e4ea7c06-0ac0-11f0-9310-92fbcf53809c.png

如果改为1us翻转,通过IO翻转来测试,误差就相对明显一点。

4

源码描述

有经验的工程师应该都能看懂,这里针对初学者简单说下。

R_PORT10->PODR ^=1<<(BSP_IO_PORT_10_PIN_01 & 0xFF);
为了减少软件带来误差,这里直接操作寄存器进行IO翻转。
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS);
R_BSP_SoftwareDelay:阻塞延时函数,是FSP软件包自带函数接口。 BSP_DELAY_UNITS_MILLISECONDS:宏定义,延时单位(毫秒)。系统定义了三个宏:
typedefenum
{
  BSP_DELAY_UNITS_SECONDS   =1000000,///< Requested delay amount is in seconds
  BSP_DELAY_UNITS_MILLISECONDS =1000,  ///< Requested delay amount is in milliseconds
  BSP_DELAY_UNITS_MICROSECONDS =1   ///< Requested delay amount is in microseconds
}bsp_delay_units_t;
R_BSP_SoftwareDelay:其实就是利用SysTick进行的延时。e500008a-0ac0-11f0-9310-92fbcf53809c.png  通过分析源码,你会发现Cortex-M85内核的SysTick和Cortex-M3的向下兼容,常用的接口也一样。 最后,单片机内核的SysTick是不是很简单,希望通过本文的描述,对你了解SysTick有所帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6058

    文章

    44816

    浏览量

    644444
  • 瑞萨
    +关注

    关注

    36

    文章

    22353

    浏览量

    87566
  • RA8
    RA8
    +关注

    关注

    0

    文章

    9

    浏览量

    6690
  • Systick
    +关注

    关注

    0

    文章

    63

    浏览量

    13426

原文标题:瑞萨RA8系列教程 | RA8单片机SysTick使用描述

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于RA8单片机的智能小车项目方案 附源代码

    基于RA8单片机,e2studio开发环境,给大家讲述一下智能小车项目的方案,并附上主要的源代码。
    的头像 发表于 03-07 14:36 1056次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b><b class='flag-5'>单片机</b>的智能小车项目方案 附源代码

    RA8系列高性能MCU开发上手体验

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是RA8系列高性能MCU开发上手体验。
    的头像 发表于 08-08 15:21 1653次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b><b class='flag-5'>系列</b>高性能<b class='flag-5'>MCU</b>开发上手体验

    RA8快速上手指南:Cortex-M85内核RA8开发环境搭建 并点亮一个LED

    因为Cortex-M内核,RA8系列单片机支持多种市面上常见的开发环境,像Keil MDK、IAR EWARM等,而本文讲述的是
    的头像 发表于 03-17 14:35 671次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>快速上手指南:Cortex-M85内核<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>开发环境搭建 并点亮一个LED

    Cortext-M85内核RA8系列单片机的串口输出实现方法

    串口是最常见的通信方式之一,也是单片机调试最常见的通信接口,也是现在的单片机必备的通信接口,目前(2024-05)最新、最强的Cortext-M85内核的RA8系列
    的头像 发表于 03-21 09:58 798次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>Cortext-M85内核<b class='flag-5'>RA8</b><b class='flag-5'>系列</b><b class='flag-5'>单片机</b>的串口输出实现方法

    面向电机控制应用推出性能卓越的RA8 MCU

    的实时控制要求。   RA8T1产品群是RA8系列的第三款产品。所有RA8
    发表于 01-31 15:29 1282次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>面向电机控制应用推出性能卓越的<b class='flag-5'>RA8</b> <b class='flag-5'>MCU</b>

    IAR为RA8系列MCU开发提供支持

    嵌入式开发软件和服务的全球领导者IAR今日宣布,其最新发布的IAR Embedded Workbench for Arm 9.40.2版本中无缝集成了对(Renesas)RA8系列
    的头像 发表于 11-02 17:08 1218次阅读

    新品发布 | 推出面向图形显示应用和语音/视觉多模态AI应用的全新RA8 MCU产品群

    新闻快讯 全球半导体解决方案供应商电子(TSE:6723)宣布推出RA8D1微控制器(MCU)产品群。RA8D1产品群作为
    的头像 发表于 12-15 16:00 944次阅读
    新品发布 | <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>推出面向图形显示应用和语音/视觉多模态AI应用的全新<b class='flag-5'>RA8</b> <b class='flag-5'>MCU</b>产品群

    电子宣布推出RA8D1微控制器(MCU)产品群

    2023年12月12日,电子宣布推出RA8D1微控制器(MCU)产品群。RA8D1产品群作为
    的头像 发表于 12-15 15:58 1226次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子宣布推出<b class='flag-5'>RA8</b>D1微控制器(<b class='flag-5'>MCU</b>)产品群

    电子推出全新RA MCU家族产品RA8

    电子推出的全新RA MCU家族产品RA8,是业界首款搭载Arm Cortex-M85内核超高性能MC
    的头像 发表于 12-20 12:25 1355次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子推出全新<b class='flag-5'>RA</b> <b class='flag-5'>MCU</b>家族产品<b class='flag-5'>RA8</b>

    RA8系列用户手册

    电子发烧友网站提供《RA8系列用户手册.pdf》资料免费下载
    发表于 01-29 14:06 0次下载
    <b class='flag-5'>RA8</b><b class='flag-5'>系列</b>用户手册

    AMEYA360 | 皇华:面向电机控制应用推出性能卓越的RA8 MCU

    AMEYA360 | 皇华:面向电机控制应用推出性能卓越的RA8 MCU:全球半导体解决方案供应商
    的头像 发表于 02-02 16:02 691次阅读

    电子RA家族推出RA8系列高算力通用MCU

    电子RA家族推出RA8系列高算力通用MCU,是业界首款基于Arm® Cortex®-M85(
    的头像 发表于 04-02 14:14 1843次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA</b>家族推出<b class='flag-5'>RA8</b><b class='flag-5'>系列</b>高算力通用<b class='flag-5'>MCU</b>

    RA8硬件手册(英)

    RA8硬件手册
    发表于 06-20 15:24 3次下载

    电子全新RA8系列MCU产品介绍

    Arm Cortex-M85 RA8系列于2024年11月推出RA8E1和RA8E2两款新产品。这两款新产品已正式量产上市,将高算力的RA8
    的头像 发表于 11-09 17:04 963次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子全新<b class='flag-5'>RA8</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>产品介绍

    电子RA8E1和RA8E2 MCU新品解读

    Arm Cortex-M85 RA8系列于2024年11月推出RA8E1和RA8E2两款新产品。这两款新产品已正式量产上市,将高算力的RA8
    的头像 发表于 12-09 10:35 745次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA8</b>E1和<b class='flag-5'>RA8</b>E2 <b class='flag-5'>MCU</b>新品解读