这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » Jobs带你重玩转STM32单片机-第二讲

共23条 1/3 1 2 3 跳转至

Jobs带你重玩转STM32单片机-第二讲

院士
2014-11-23 09:56:52     打赏

STM32微处理器的Systick使用

在51单片机的定时器里,大家都会想到几乎万能的定时器T1。在以Cortex-M3为内核的STM32里,其拥有比51单片机更优秀的定时器功能,不仅在数量,而且质量也优几个档次。

对于我们平时使用延时或者计数定时器,我们更是无须使用STM32强大的TIM1,一个小小的systick定时器就完全能胜任了。

systick定时器是Cortex-M3为RTOS而专门定制的一款定时器,更多的优点请大家自行搜索,这里由于篇幅,不再赘述。

简单说说其使用,其定时器的计数间隔为系统主时钟(或者系统主时钟8分频),且为向下计数。当计数值溢出后,触发systick_handler中断,并自行装载计数值,准备下一次中断。

因此,对于我们72MHz的主频里,想要一个10Hz的中断触发,我们预置的计数值则为 72000000/10 = systemclock/10;

systick定时器的配置也非常简单,短短的一个语句即可完成:


if (SysTick_Config(SystemCoreClock / 10)) //参数为系统时钟的向上溢出值,此配置为7200000,即100ms中断一次
  {
    /* Capture error */ 
    while (1);

  }



下面版主帖出工程的源代码,以供参考:



/**
  ******************************************************************************
  * @file    main.c
  * @author  Jobs Zheng
  * @version v1.0
  * @date    2014-11-23   09:01
  * @brief   EEPW ARM DIY Systick实验
  * @note    演示systick的实验
  ******************************************************************************
  * @attention
  *
  *

	© COPYRIGHT 2014

*
  *
  ******************************************************************************
  */


/* Includes ------------------------------------------------------------------*/
#include 
#include 
#include 

#include "bsp_stm32_eepw.h"

/** @addtogroup STM32_EEPW
  * @{
  */

/** @defgroup SYSTICK 
  * @brief 
  * @{
  */

/** @defgroup SYSTICK_Private_TypesDefinitions
  * @{
  */

/**
  * @}
  */

/** @defgroup SYSTICK_Private_Defines
  * @{
  */
//#define XXXX    ()  /*!<  */
/**
  * @}
  */

/** @defgroup SYSTICK_Private_Macros
  * @{
  */

/**
  * @}
  */

/** @defgroup SYSTICK_Private_Variables
  * @{
  */

/**
  * @}
  */

/** @defgroup SYSTICK_Private_FunctionPrototypes
  * @{
  */

/**
  * @}
  */

/** @defgroup SYSTICK_Private_Functions
  * @{
  */

void main(void)
{
  BspInit();
  
  
  if (SysTick_Config(SystemCoreClock / 10)) //参数为系统时钟的向上溢出值,此配置为7200000,即100ms中断一次
  {
    /* Capture error */ 
    while (1);

  }


  while(true)
  {
    ;
  }
}

/**
  * @brief  SysTick_Handler的中断入口函数
  * @param  
  * @retval 
  * @date   2014-11-23
  * @note   
  */

void SysTick_Handler(void)
{
  LedToggle(LED_A);
  LedToggle(LED_B);
}


/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/******************* (C) EEPW.com.cn*****END OF FILE****/



工程文件需要回复才能看到哟~~

——回复可见内容——

感谢 网友liklon 纠错




关键词: STM32     重玩     ARM     教程    

高工
2014-11-23 17:23:25     打赏
2楼

好货,收了

jobs再科普一下时钟配置吧


院士
2014-11-23 17:32:43     打赏
3楼

时钟配置还真有些复杂。

多种时钟源,多种总线时钟,唉~~


工程师
2014-11-23 21:03:02     打赏
4楼
录个视频

院士
2014-11-23 22:28:24     打赏
5楼
回复后看看。

院士
2014-11-24 09:24:21     打赏
6楼

抱歉,么有第一时间审核~~~


院士
2014-11-24 19:30:15     打赏
7楼

以后安排工作日发布帖子。


这样 审核的问题就能有效解决了。


高工
2014-11-24 23:14:24     打赏
8楼
温故而知新,不错,继续学习中

院士
2014-11-28 21:59:41     打赏
9楼
下载了,谢谢版主分享。

院士
2014-11-29 23:09:49     打赏
10楼
请问版主:STM32单片机的这个活动有几讲,跟着学需要另外准备教材吗?

共23条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]