用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
2.2 KiB

#include "systick.h"
/******************************************************************
*函数名称:void RCC_HSE_Config(void)
*函数功能:修改系统时钟
*输入:无
*输出:无
******************************************************************/
#ifdef REVISE_SYSTICK
void RCC_HSE_Config(void)
{
RCC_DeInit();//将RCC寄存器设置为缺省值
RCC_HSEConfig(RCC_HSE_ON);//打开HSE
if(RCC_WaitForHSEStartUp()==SUCCESS)//检查HSE是否稳定
{
RCC_HCLKConfig(RCC_SYSCLK_Div1);//将HCLK时钟等于系统时钟
RCC_PCLK1Config(RCC_HCLK_Div1);//将PCLK1时钟等于HCLK
RCC_PCLK2Config(RCC_HCLK_Div2);//PCLK2时钟等于HCLK的一半
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//锁相环将HSE进行9倍频
RCC_PLLCmd(ENABLE);//使能PLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);//检查PLL是否准备就绪
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//将PLL时钟作为系统时钟
while(RCC_GetSYSCLKSource()!=0x08);//进一步检查是否已经将PLL作为系统时钟,如果不是将进入死循环
}
}
#endif
/******************************************************************
*函数名称:void delay_us(uint16_t uns)
*函数功能:系统实现精确延时1us
*输入:uns
*输出:无
******************************************************************/
void delay_us(uint16_t uns)
{
uint32_t temp;
SysTick->LOAD=9*uns;//向自动转载寄存器中装载值
SysTick->VAL=0x00;//清空计数寄存器,在清空寄存器的时候LOAD中的值会自动装载到VAL中
SysTick->CTRL=0x01;//打开系统定时器,并且时钟为HCLK/8
do
{
temp=SysTick->CTRL;//读取CTRL中的值,扫描标志位是否置位
}while((temp&0x01)&&(!(temp&(1<<16))));
SysTick->VAL=0x00;//清空VAL寄存器
SysTick->CTRL=0x00;//关闭定时器
}
/******************************************************************
*函数名称:void delay_ms(uint16_t ums)
*函数功能:系统实现精确延时1ms
*输入:uns
*输出:无
******************************************************************/
void delay_ms(uint16_t ums)
{
uint32_t temp;
SysTick->LOAD=9000*ums;//向自动转载寄存器中装载值
SysTick->VAL=0x00;//清空计数寄存器,在清空寄存器的时候LOAD中的值会自动装载到VAL中
SysTick->CTRL=0x01;//打开系统定时器,并且时钟为HCLK/8
do
{
temp=SysTick->CTRL;//读取CTRL中的值,扫描标志位是否置位
}while((temp&0x01)&&(!(temp&(1<<16))));
SysTick->VAL=0x00;//清空VAL寄存器
SysTick->CTRL=0x00;//关闭定时器
}