瑞萨MCU RA8系列教程:RA8单片机SysTick运用描绘

社会 2025-05-29 19:28:47 675
每个Cortex-M内核都集成了一个SysTick模块,那是由于这个模块几乎是单片机项目必备的一个(。定时器。)功用。不管是最新的Cortex-M85内核,仍是经典的Cortex-M3内核。
单片机。,都集成了SysTick模块。cm3.h与cm85.h。

单片机开发。

者,触摸最多的便是core_cm3.h(core_cm85.h)文件,这儿界说了与内核相关的大部分内容,平常咱们调用最多也是这儿的。接口。咱们比照一下这两个源文件:
经过比照源代码,你会直观地发现,cm85比cm3代码行数显着大多了,1943行和4672行。当然,行数多了这么多,左边赤色(差异)部分也比较多。

尽管,左边“赤色”比较多,但大部分都是多出来的行数以及宏界说。细心比照,其实许多都是相同的,比方咱们常用的体系复位函数:  。

__NO_RETURN __STATIC_INLINEvoid__NVIC_SystemReset(void){__DSB(); /* Ensure all outstanding memory。
ac。 cesses included                                   buffered wri。te。are completed before reset */SCB->。AI。RCR = (uint32_t)((0x5FAUL。AIRCR& SCB_AIRCR_PRIGROUP_Msk) |              SCB_AIRCR_SYSRESETREQ_Msk  );    /* Keep priority group unchanged */__DSB();                             /* Ensure completion of memory access */for(;;)                             /* wait un。 << SCB_AIRCR_VECTKEY_Pos)    |             (SCB->ti。l reset */ { __NOP(); }}。再比方体系Tick装备函数:

 。

__STATIC_INLINEuint32_tSysTick_Config(uint32_tticks){if((ticks -1UL) >SysTick_LO。
AD。_RELOAD_Msk) { return(1UL);                         /* Reload value impossible */ } SysTick->LOAD = (uint32_t)(ticks -1UL);            /* set reload register */NVIC_SetPriority(SysTick_IRQn, (1UL。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 */}。<< __NVIC_PRIO_BITS) - 1UL);/* set Priority for Systick Interrupt */ SysTick->其实,你会发现,在Cortext-M3单片机上常用的这些函数接口,根本和CM85相同,这也阐明。

CM85大部分接口向下兼容CM3。RA8单片机SysTick运用描绘。

这儿结合。

瑞萨。RA8D1(Cortex-M85内核)单片机给咱们叙述一下SysTick的用法以及描绘其源码。运用e。

2。studio以及fsp软件包。东西自带的软件包其实是最有用的,这儿以IO翻转,SysTick延时为例,手把手教咱们创立一个工程,并演示作用。

1。

翻开e。

2。studio创立单片机项目。咱们命名项目名称为:RA8D1_SysTick挑选对应芯片型号:R7FA8D1BEC      。

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

2。

装备工程。

这儿装备一些根底的信息,咱们运用一个IO(PA01)来测验一下SysTick延时时刻。

装备。

时钟。树:装备输出Hex文件:  。

3。

演示。

这儿仅仅简略演示Demo,咱们增加一个IO翻转来测验SysTick延时时刻。

while(1){ R_PORT10->PODR^=1。

PI。<<(BSP_IO_PORT_10_N_01&0xFF);  //PA01亮灭翻转 R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_MILLISECONDS);  //SysTick延时}。 这个是1ms翻转,SysTick延时差错仍是比较小,相对1ms来说差错能够疏忽(采样频率100KHz看不出来差错)。		 采样频率为100MHz,其实仍是看得出来有点差错。当然,这个差错是晶振、软件等多种要素影响的。还有,us等级的差错,相对ms能够疏忽。
假如改为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,///。
R_BSP_SoftwareDelay:其实便是使用SysTick进行的延时。		 经过剖析源码,你会发现Cortex-M85内核的SysTick和Cortex-M3的向下兼容,常用的接口也相同。		最终,单片机内核的SysTick是不是很简略,期望经过本文的描绘,对你了解SysTick有所协助。< 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;

内容来源:https://artdesignphuong.com/app-1/mg88,https://chatbotjud-hml.saude.mg.gov.br/app-1/instagram-stalker

本文地址:http://w.21nx.com/news/62127261-06e34499649.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

西山居30周年:从酷爱动身,与年代同行

新年新玩法,小模糊仙互动小游戏《宴游美好年》上线,穿越古今共赴四喜名宴

江苏一发电风车坍毁:丢失或达300万

闪极、雷鸟AI眼镜大翻车 产品摄影音质过硬续航跟上不成问题

《新风助眠白皮书》发布:海信新风空调实测,1 晚多睡 1 小时

1月末我国外汇储备规划32090亿美元 保持稳定有支撑

国金证券:AI数据中心规划扩张带动燃机需求提高 看好国内燃气轮机产业链龙头比例提高

奕源半导体资料产业基地下一年投产 百亿级项目发动

友情链接