当前位置: 代码迷 >> 综合 >> STM32学习笔记15:SysTick(系统定时器)
  详细解决方案

STM32学习笔记15:SysTick(系统定时器)

热度:100   发布时间:2023-09-28 02:44:47.0

STM32学习笔记15:SysTick(系统定时器)

 eg:

系统定时时间 = SysTick_Config(SystemCoreClock / 100000)中的参数(SystemCoreClock / 100000)*(1/SystemCoreClock )

 延时时间 = Delay_us(100000) 中参数100 000 * 系统定时时间

注意:不过 1us 的中断没啥意义,整个程序的重心都花在进出中断上了,根本没有时间处理其他的任务

/********************************************************************************* @file    main.c* @author  fire* @version V1.0* @date    2014-xx-xx* @brief   使用SysTick进行精确延时******************************************************************************* @attention** 实验平台:秉火  STM32 F429 开发板* 论坛    :http://www.firebbs.cn* 淘宝    :http://firestm32.taobao.com********************************************************************************/#include "stm32f4xx.h"
#include "./led/bsp_led.h"
#include "./systick/bsp_SysTick.h"/*** @brief  主函数* @param  无* @retval 无*/
int main(void)
{/* LED 端口初始化 */LED_GPIO_Config();	 /* 配置SysTick 为10us中断一次,时间到后触发定时中断,*进入stm32fxx_it.c文件的SysTick_Handler处理,通过数中断次数计时*/SysTick_Init();while(1){LED_RED; Delay_us(100000);    	// 10000 * 10us = 1000ms//Delay_ms(1000);LED_GREEN;Delay_us(100000);		// 10000 * 10us = 1000ms//Delay_ms(1000);LED_BLUE;Delay_us(100000);		// 10000 * 10us = 1000ms//Delay_ms(1000);}   
}/*********************************************END OF FILE**********************/
/********************************************************************************* @file    bsp_SysTick.c* @author  fire* @version V1.0* @date    2015-xx-xx* @brief   SysTick 系统滴答时钟10us中断函数库,中断时间可自由配置,*          常用的有 1us 10us 1ms 中断。     ******************************************************************************* @attention** 实验平台:秉火  STM32 F429 开发板* 论坛    :http://www.firebbs.cn* 淘宝    :http://firestm32.taobao.com********************************************************************************/#include "./systick/bsp_SysTick.h"static __IO u32 TimingDelay;/*** @brief  启动系统滴答定时器 SysTick* @param  无* @retval 无*/
void SysTick_Init(void)
{/* SystemFrequency / 1000    1ms中断一次* SystemFrequency / 100000	 10us中断一次* SystemFrequency / 1000000 1us中断一次*/if (SysTick_Config(SystemCoreClock / 100000))//{ /* Capture error */ while (1);}
}/*** @brief   us延时程序,10us为一个单位* @param  *		@arg nTime: Delay_us( 1 ) 则实现的延时为 1 * 10us = 10us* @retval  无*/
void Delay_us(__IO u32 nTime)
{ TimingDelay = nTime;	while(TimingDelay != 0);
}/*** @brief  获取节拍程序* @param  无* @retval 无* @attention  在 SysTick 中断函数 SysTick_Handler()调用*/
void TimingDelay_Decrement(void)
{if (TimingDelay != 0x00){ TimingDelay--;}
}
/*********************************************END OF FILE**********************/
/********************************************************************************* @file    Project/STM32F4xx_StdPeriph_Templates/stm32f4xx_it.c * @author  MCD Application Team* @version V1.5.0* @date    06-March-2015* @brief   Main Interrupt Service Routines.*          This file provides template for all exceptions handler and *          peripherals interrupt service routine.******************************************************************************* @attention** <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2>** Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");* You may not use this file except in compliance with the License.* You may obtain a copy of the License at:**        http://www.st.com/software_license_agreement_liberty_v2** Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.********************************************************************************//* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_it.h"extern void TimingDelay_Decrement(void);/** @addtogroup STM32F429I_DISCOVERY_Examples* @{*//** @addtogroup FMC_SDRAM* @{*/ /* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*//******************************************************************************/
/*            Cortex-M4 Processor Exceptions Handlers                         */
/******************************************************************************//*** @brief  This function handles NMI exception.* @param  None* @retval None*/
void NMI_Handler(void)
{
}/*** @brief  This function handles Hard Fault exception.* @param  None* @retval None*/
void HardFault_Handler(void)
{/* Go to infinite loop when Hard Fault exception occurs */while (1){}
}/*** @brief  This function handles Memory Manage exception.* @param  None* @retval None*/
void MemManage_Handler(void)
{/* Go to infinite loop when Memory Manage exception occurs */while (1){}
}/*** @brief  This function handles Bus Fault exception.* @param  None* @retval None*/
void BusFault_Handler(void)
{/* Go to infinite loop when Bus Fault exception occurs */while (1){}
}/*** @brief  This function handles Usage Fault exception.* @param  None* @retval None*/
void UsageFault_Handler(void)
{/* Go to infinite loop when Usage Fault exception occurs */while (1){}
}/*** @brief  This function handles Debug Monitor exception.* @param  None* @retval None*/
void DebugMon_Handler(void)
{}/*** @brief  This function handles SVCall exception.* @param  None* @retval None*/
void SVC_Handler(void)
{}/*** @brief  This function handles PendSV_Handler exception.* @param  None* @retval None*/
void PendSV_Handler(void)
{}/*** @brief  This function handles SysTick Handler.* @param  None* @retval None*/
void SysTick_Handler(void)
{TimingDelay_Decrement();
}/******************************************************************************/
/*                 STM32F4xx Peripherals Interrupt Handlers                   */
/*  Add here the Interrupt Handler for the used peripheral(s) (PPP), for the  */
/*  available peripheral interrupt handler's name please refer to the startup */
/*  file (startup_stm32f429_439xx.s).                         */
/******************************************************************************//*** @}*/ /*** @}*/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/