【极海APM32F407 Tiny Board】systick时钟测试
[复制链接]
测试下使用systick时钟做延时函数,来测试下延时时间。
一、systick时钟源
systick是一个 24 位自减型系统定时器。
时钟树
systick时钟源是HCLK主时钟8分频后的时钟。
二、程序部分
2.1、systick.c
#include "main.h"
static __IO u32 TimingDelay;
/*!
* [url=home.php?mod=space&uid=159083]@brief[/url] Start SysTick
*
* @param None
*
* @retval None
*/
void SysTick_Init(void)
{
/** SystemFrequency / 1000 = 1ms */
if (SysTick_Config(SystemCoreClock / 1000))
{
/** Capture error */
while (1);
}
}
/*!
* @brief Precise Delay
*
* @param nTime in milliseconds
*
* @retval None
*/
void SysTick_Delay_ms(__IO u32 nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
/*!
* @brief Decrements the TimingDelay
*
* @param None
*
* @retval None
*/
void TimingDelay_Decrement(void)
{
if(TimingDelay != 0)
{
TimingDelay--;
}
}
在systick中断调用TimingDelay_Decrement()函数。
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
2.2、main.c
#include "main.h"
#include "Board.h"
int main(void)
{
SysTick_Init();
init_led();
led2_off();
led3_on();
while (1)
{
led2_tog();
led3_tog();
SysTick_Delay_ms(100);
}
}
三、运行
程序运行后,测试下LED2端口的波形。
延时时间和程序设置的时间一致。
|