新疆喜乐彩玩法

STM32 SysTick定时器应用【worldsing笔记】

2019-12-11来源: eefocus关键字:STM32  SysTick  定时器

SysTick是CM内核独立的定时器,时钟可以用内核内部的,也可以用芯片厂家(ST)的时钟,参考《Cortex-M3权威指南》的第13章:

image 
另外也可以考《STM32F10xxx Cortex-M3 programming manual.pdf》第4章CM3系统外设,从手册来看,ST应该只提供了内核外部时钟,而外部时钟又分成两种:HCLK/8 和 HCLK, 
image 
ST官方提供了库直接可以操作SYSTICK,但不同的版本使用起来有些区别: 
在V2.0的版本中对SysTick的操作是使用的stm32f10x_systick.c和stm32f10x_systick.h 
void SysTick_CLKSourceConfig(u32 SysTick_CLKSource); 
void SysTick_SetReload(u32 Reload); 
void SysTick_CounterCmd(u32 SysTick_Counter); 
void SysTick_ITConfig(FunctionalState NewState); 
u32 SysTick_GetCounter(void); 
FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG); 
image 
但是在V3.0中取消了stm32f10x_systick.c和stm32f10x_systick.h文件直接在core_cm3.h文件定义成内联函数 
/* ##################################    SysTick function  ############################################ */ 
#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) 
/** 
* @brief  Initialize and start the SysTick counter and its interrupt. 

* @param   ticks   number of ticks between two interrupts 
* @return  1 = failed, 0 = successful 

* Initialise the system tick timer and its interrupt and start the 
* system tick timer / counter in free running mode to generate 
* periodical interrupts. 
*/ 
static __INLINE uint32_t SysTick_Config(uint32_t ticks) 

  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */ 
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */ 
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */ 
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */ 
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 
                   SysTick_CTRL_TICKINT_Msk   | 
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */ 
  return (0);                                                  /* Function successful */ 

#endif 
而且是默认使用的AHB总线的时钟HCLK 
 
宗合上述如果使用V3版本SysTick的话可以做以下操作,在不知道AHB总线的时钟的频下也可以直接算出加载值: 
void SysTickInit(u16 Frequency) 

RCC_ClocksTypeDef  RccClocks; 
RCC_GetClocksFreq(&RccClocks); 
SysTick_Config(RccClocks.HCLK_Frequency / Frequency); 

//systick.c文件 
#include "stm32f10x_rcc.h" 
#include "systick.h" 
u8 SysTickTimes[SYS_TICK_TIME_SIZE]; 
void SysTickInit(u16 Frequency) 

u8 i; 
RCC_ClocksTypeDef  RccClocks; 
for(i = 0; i < SYS_TICK_TIME_SIZE; i++) 
SysTickTimes = 0; 
RCC_GetClocksFreq(&RccClocks); 
SysTick_Config(RccClocks.HCLK_Frequency / Frequency); 

void SysTick_Handler(void) 

u8 i; 
for(i = 0; i < SYS_TICK_TIME_SIZE; i++) 
if(SysTickTimes) 
SysTickTimes--; 

/** 
  ****************************************************************************** 
  * @file    systick.h 
  * @author  onsunsl 
  * @version V0.1 
  * @date    11-March-2013 
  * @brief   define the zx240160m1a option cmd 
  ****************************************************************************** 
  */ 
#ifndef __SYSTICK__H 
#define __SYSTICK__H 
void SysTickInit(u16 Frequency); 
#define SYS_TICK_TIME_SIZE    10 
#endif 
/******************* (C) COPYRIGHT 2013 LCJCTEC *****END OF FILE***************/


关键字:STM32  SysTick  定时器 编辑:什么鱼 引用地址:http://news.zjgsmm.com/mcu/ic482604.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:uCos 没有延时Tick滴答定时器测试
下一篇:74LS164 for stm32 源码

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8 GPIO 学习(驱动LED、Button)
STM8中GPIO寄存器有:输出寄存器(ODR),输入寄存器(IDR),方向寄存器(DDR),控制寄存器1(CR1)和控制寄存器2(CR2).后面三个寄存器组和可以配置为8种GPIO的模式定义如下:/**  * @brief General Purpose I/Os (GPIO)  */typedef struct GPIO_struct{  __IO uint8_t ODR; /*!< Output Data Register */  __IO uint8_t IDR; /*!< Input Data Register */  __IO uint8_t DDR
发表于 2020-01-19
STM8 GPIO 学习(驱动LED、Button)
STM8单片机STVD环境新建工程笔记
;workspace10.修改workspace的路径为我们自己新建的STVDcosmic下。11.项目名称、路径、编译器设置如下 STM8想用C语言编程,很多人都是用的STVD+COSMIC,安装cxstm8_FSE_stm32_32K.exe软件。这里说说STVD的编译的事情,STVD本身只支持汇编语言,想用C还得借助COSMIC,所以一些设置是必须的,就是在STVD下面选择COSMIC的编译文件(这个根据软件版本自行设置),下图用我的举例单单是把两个软件安装好,编译路径配置好,编译的时候肯定还会出现STM8官方头文件找不到的错误,网上也有解决办法,就是要把头文件复制到自己的工程下,在工程下面把头文件添加进来,这样每个工程都得弄一次,实在是
发表于 2020-01-19
STM8单片机STVD环境新建工程笔记
stm8使用iar刚开始烧录ok,用着用着就下载失败解决方案
用iar写代码的时候,用stlink 下载,再排除接线和烧录器问题,基本上都是要重新用stvp烧录下错误提示:Failed to set configuration with MCU name STM8S207MB: SWIM error [30006] xxxxxxx要是嫌麻烦,可以直接用svtp开发也行1.配置iar 输出s19格式点击rebuild all 生成.s19文件文件在Debug/Exe下打开ST Visual Programmer(STVP)并设置硬件连接方式和MCU型号,这里以ST-Link连接STM8S003F为例用swim方式导入要烧录的.s19文件,设置是否锁定芯片(可以不设置)点击下载按钮Program
发表于 2020-01-19
stm8使用iar刚开始烧录ok,用着用着就下载失败解决方案
stm8系列通过option_byte 来实现端口的remaping
最近在调 stm8,发现需要用到端口映射,研究下用option byte来修改首先确定需求需要使用PC6来发射方波,用到定时器1的ch1需要激活重定向三种方式可以实现,一种是通过IAR for stm8,一种是stvp,一种是在程序执行的时候去改通过程序写flash,这儿先介绍软件的方式IAR 改option byte打开IAR打开option bytes右击 选择 激活保存到制定位置右击打开option找到地方,勾选之后,在重新rebuil all 然后烧录就行了stvp这个就简单了打开,选择型号,点开option byte下拉框选一下,然后电机这个按钮就行了打完收工
发表于 2020-01-19
stm8系列通过option_byte 来实现端口的remaping
IAR for stm8安装破解
1.下载安装包和注册机链接:https://pan.baidu.com/s/1maBEtoyps2HhcdGYxmZUcA提取码:31dn复制这段内容后打开百度网盘手机App,操作更方便哦百度云下载下来这个样子:2.双点击EWSTM8-3104-Autorun安装同意,下一步到结束 。。。 中间会装几个驱动,装就是了装完退出,打完收工3. 注册IAR for STM8是一个收费的软件,官方严厉打击盗版,若你是商业用途,建议购买正版软件。当然,我这里是针对个人开发学习的朋友而言,进行非商业用途的使用。3.1 打开上面安装好的IAR for STM8软件(没有创建桌面快捷方式,可以从开始菜单打开软件)。 Help ->
发表于 2020-01-19
IAR for stm8安装破解
STM32 下载程序时,往flash固定位置写数据配置
1.就像参数定义时使用下面语句const unsigned char Flash_user_data[16] __attribute__((at(0X08080000))) ={            0x01,0x02,0x03,0x04,               0x01,0x01,0x03,0x03,     
发表于 2020-01-19
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 zjgsmm.com, Inc. All rights reserved
海南4+1 吉林福彩网 98彩票网 北京赛车怎么玩 智慧彩票投注预测APP 北京赛车pk10赔率最高的平台 北京两步彩APP 北京赛车pk10赔率最高的平台 新疆喜乐彩走势图 北京赛车怎么玩