河南建设厅二建公示网站首页,绍兴易网网站开发,河南公司网站建设,泉州网站制作建设SysTick简介与特性 -1- SysTick属于系统时钟。
-2- SysTick定时器被捆绑在NVIC中。
-3- SysTick可以产生中断,且中断不可屏蔽。
SysTick的时钟源查看 通过时钟树可以看出滴答的时钟最大为72MHZ/89MHZ 通过中文参考手册也可以得到这个结论
代码编写#xff08;已经验证9MHZ 通过中文参考手册也可以得到这个结论
代码编写已经验证可直接拷贝使用 SysTick源文件
#include Systick.hstatic u8 fac_us0;
static u16 fac_ms0; void Sys_Tick_Init(void)
{SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);fac_msSystemCoreClock/8000;fac_usSystemCoreClock/8000000;
}void Delay_Ms(u16 nms)
{u32 temp;//倒数值,fac_ms代表一毫秒所需节拍数,与形参乘法运行得到所需的全部节拍数SysTick-LOAD(u32)nms*fac_ms;//清空计数器SysTick-VAL 0x00; //对控制寄存器第0位写1代表始能SysTick-CTRL|SysTick_CTRL_ENABLE_Msk ;//这句话的意思控制寄存器是使能的且时间还未到达,就会一直卡在此处do{tempSysTick-CTRL;}while((temp0x01)!(temp(116))); //对控制寄存器第0位写1代表示除能SysTick-CTRL~SysTick_CTRL_ENABLE_Msk; //清空计数器SysTick-VAL 0x00; }void Delay_Us(u32 nms)
{u32 temp;//倒数值,fac_ms代表一毫秒所需节拍数,与形参乘法运行得到所需的全部节拍数SysTick-LOAD(u32)nms*fac_us;//清空计数器SysTick-VAL 0x00; //对控制寄存器第0位写1代表始能SysTick-CTRL|SysTick_CTRL_ENABLE_Msk ;//这句话的意思控制寄存器是使能的且时间还未到达,就会一直卡在此处do{tempSysTick-CTRL;}while((temp0x01)!(temp(116))); //对控制寄存器第0位写1代表示除能SysTick-CTRL~SysTick_CTRL_ENABLE_Msk; //清空计数器SysTick-VAL 0x00; }
主函数
#include stm32f10x.h
#include Systick.hvoid LED_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);GPIO_InitStructure.GPIO_Pin GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_Init(GPIOB, GPIO_InitStructure);GPIO_Init(GPIOE, GPIO_InitStructure);}int main(void)
{ Sys_Tick_Init();LED_Init();while(1){GPIO_ResetBits(GPIOB,GPIO_Pin_5);GPIO_ResetBits(GPIOE,GPIO_Pin_5);Delay_Ms(500);GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_SetBits(GPIOE,GPIO_Pin_5); Delay_Ms(500); }
}
工程获取
三连后点击下方头像