瑞萨MCU RA8系列教程:RA8单片机SysTick运用描绘
单片机。,都集成了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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。