/************************* Copyright (c) 2014 SmartMcu Team *****************************
*项目名称:SysTick中断-Led灯闪烁
*开发平台:SmartM-M4系列开发板
****************************************************************************************/
#include "SmartM_M4.h"
/*-------------------------------------------------------*/
/* 全局变量 */
/*-------------------------------------------------------*/
VOLATILE BOOL g_vbSysTickEvent = FALSE;
/*-------------------------------------------------------*/
/* 函数 */
/*-------------------------------------------------------*/
/****************************************
*函数名称:SysTickInitWithInterrput
*输 入:ms -毫秒
*输 出:无
*功 能:SysTick初始化并使能中断
******************************************/
VOID SysTickInitWithInterrput(UINT32 ms)
{
/* 1.SysTick的自动重载值的设置 */
SysTick->LOAD = ms * 12 * 1000;
/* 2.为NVIC SysTick中断设置优先级 */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
/* 3.清零计数器*/
SysTick->VAL = (0x00);
/*4.SysTick的时钟源选择为外部晶振、使能计数器、使能SysTick中断*/
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk ;
}
/****************************************
*函数名称:main
*输 入:无
*输 出:无
*功 能:函数主体
******************************************/
int32_t main(void)
{
BOOL b = FALSE;
PROTECT_REG
(
/* 系统时钟初始化 */
SYS_Init(PLL_CLOCK);
)
/* PB8引脚初始化为输出模式 */
GPIO_SetMode(PB,BIT8,GPIO_MODE_OUTPUT);
SysTickInitWithInterrput(250);
while(1)
{
if(g_vbSysTickEvent)
{
g_vbSysTickEvent = FALSE;
PB8 = b;
b = !b;
}
}
}
/*-------------------------------------------------------*/
/* 中断函数 */
/*-------------------------------------------------------*/
VOID SysTick_Handler(VOID)
{
g_vbSysTickEvent = TRUE;
}
|