新闻中心

EEPW首页>嵌入式系统>设计应用> STM32学习笔记——系统定时器SysTick的使用

STM32学习笔记——系统定时器SysTick的使用

作者: 时间:2016-11-28 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/201611/322883.htm

//配置ADC时钟=PCLK2/4

RCC_ADCCLKConfig(RCC_PCLK2_Div4);

//使能PLL时钟

RCC_PLLCmd(ENABLE);

//等待PLL时钟就绪

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)

{

}

//配置系统时钟=PLL时钟

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

//检查PLL时钟是否作为系统时钟

while(RCC_GetSYSCLKSource()!=0x08)

{

}

}

}

voidNVIC_Configuration(void)//设置向量表基址

{

#ifdefVECT_TAB_RAM

NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);

#else

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);

#endif

}

voidDelay(u32nTime)//因为SysTick定时器是1ms中断,所以此函数利用中断延时nTimeMS

{

//开启SysTick计数器

SysTick_CounterCmd(SysTick_Counter_Enable);//使能或失能SysTick计数器,输入参数可以是:SysTick_Counter_Enable:使能计数器

//SysTick_Counter_Disable:失能计数器,SysTick_Counter_Clear:清除计数器值为0

TimingDelay=nTime;

while(TimingDelay!=0);//死等待等待系统定时器的1ms中断直到计数值达到

//如果跳出了while循环,在说明计时到,即产生了TimingDelay次的定时器中断

//关闭系统滴答

SysTick_CounterCmd(SysTick_Counter_Disable);

//清除SysTick计数器

SysTick_CounterCmd(SysTick_Counter_Clear);

}

//中断函数的书写格式???我试了一下更改了函数名,中断函数就不能运行了,不知道函数名是不是确定的

//不清楚是不是系统根据函数名而确定是中断服务函数的查了一些资料,目前还没找到明确的说明。

//其中TimingDelay这个全局变量在使用的时候需要在stm32f10x_it.c中进行一下声明,要不然不能使用,其声明语句是:

//externvu32TimingDelay;

//但是在本程序中TimingDelay并没有在stm32f10x_it.c中声明,也可以使用

voidSysTick_Handler(void)

{

if(TimingDelay!=0x00)

{

TimingDelay--;

}

}

#ifdefDEBUG

//assert_failed编写于文件main.c或其他用户C文件中

voidassert_failed(u8*file,u32line)

{

while(1)

{

}

}

#endif


上一页 1 2 下一页

评论


技术专区

关闭