stm32 学习笔记 systick定时器

发布者:数据迷航者最新更新时间:2016-08-25 来源: eefocus关键字:stm32  systick定时器 手机看文章 扫描二维码
随时随地手机看文章
开发STM32,遇到一些简单的需要计时的任务,比如延时等,最方便的是其提供的systick。

systick其实本为移植操作系统提供滴答时钟的方便。

前两天再次接触STM32,使用了V3.5的库,突然发现繁琐的Systick用法被简化成一句话。

即:

 void SysTick_Configuration(void)
{
  if (SysTick_Config(SystemCoreClock / 1000000))//72, 1us per tick
  {
    /* Capture error */
    while (1);
  }
}

而Systick_Config函数已经取代了之前所有的设置过程。

systick.c文件也被简除,该函数直接归在了内核文件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

优点是设置相当简化,

缺点是控制不如以前灵活了,一旦开启,确实没有库函数方便地重载或禁用。

关键字:stm32  systick定时器 引用地址:stm32 学习笔记 systick定时器

上一篇:STM32 大小容量芯片之间的差别
下一篇:stm32学习笔记 系统时钟

推荐阅读最新更新时间:2024-03-16 15:06

STM32堆和栈,变量的存储
关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的。 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个 int main() { while(1); } BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632 编译后,就会发现这么个程序已用了1600多的RAM,要是在51单片机上,会心疼死了,这1600多的RAM跑哪儿去了, 分析map,你会发现是堆和栈占用的,在startup_stm32f10x_md.s文件中,它的前面几行就有以上定义, 这下该明白了吧。 Stack_Size
[单片机]
<font color='red'>STM32</font>堆和栈,变量的存储
基于STM32设计的健康检测设备(测温心率计步)
1. 项目介绍 本文介绍的项目是基于STM32设计的健康检测设备,支持体温测量,心率检测,支持运动计步(采用MPU6050陀螺仪实现),支持WIFI传输数据到手机APP打印显示。 硬件环境介绍: MCU采用STM32F103C8T6 心率传感器采用PulseSensor 体温检测传感器采用红外测温传感器 运动计步功能采用MPU6050陀螺仪实现 OLED显示屏采用0.96寸中景园电子的OLED显示屏-SPI接口 编程软件采用: keil5 心率传感器: MPU6050传感器: 体温测温模块 OLED显示屏: 硬件效果图: 工程源码截图: 项目源码下载地址: 基于STM
[单片机]
基于<font color='red'>STM32</font>设计的健康检测设备(测温心率计步)
stm32的断言机制(assert)的理解
在做stm32的库程序移植时出现错误“#error Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file) ”,未选择STM32F4xx 设备导致多.h文件未被载入,发现是STM32F429_439xx的宏定义未定义,解决方法是在工具魔法棒 中的C/C++页的#define栏中添加相应的宏定义。 出现错误“.ObjectsSTM32F429IGT6_Demo.axf: Error: L6218E: Undefined symbol assert_param (referred from
[单片机]
<font color='red'>stm32</font>的断言机制(assert)的理解
STM32和ROS的串口通信
1 前言 之前有不少小伙伴,因为不知道如何使用这里分享的代码、或者是对系统结构不太清楚等等,导致调用不成功的,这里我深表歉意。下面我会对整个通信方案的部署进行详细的说明,确保每一个看到这篇文章的小伙伴,都能解决自己的问题。 2 本方案解决的问题 解决以STM32做ROS机器人底层驱动的串口通信问题、其他需要stm32和ros通信的小伙伴也可以使用。 -1- 介绍 1 最终协议的样子 我这里实现的STM32和ROS的串口通信协议如下图: STM32端和ROS端都有一个数据发送函数和一个数据接收函数,发送和接收的内容就是如上图所示的数据包,该数据包含有数据头(55aa)、数据尾(0d0a)、校验(crc8),
[单片机]
<font color='red'>STM32</font>和ROS的串口通信
ADS1232之STM32程序——STM32测试高精度ADC篇(一)
1.ADS1232概述 ADS1232是TI早期推出一款高精度低速率的ADC,性能参数如下 •24位Σ-Δ型双差分模拟输入ADC、完整的桥传感器前端 •高达23.5个有效位 •低噪PGA、19.2-bit的无噪声分辨率(PGA= 64) •同时抑制50 Hz/60 Hz、10sps或80sps数据率 •供电范围:2.7V至5.3v 性价比很高,非常适用于静态变量的测试,如电子秤、应变计、压力传感器、工业过程控制等应用。本人对ADS1232做了一次比较测试,分享下测试的结果 2.硬件设计分析 从结构图可以看出来,ADS1232是模拟区域与数字区域完全独立的ADC,在原理图设计方面按照官方指导文档,需要对两个区域做独
[单片机]
无人机设计中STM32库实现的模拟i2c代码
目前发现国内正儿八经机器人、无人机并且还能活跃地上网关注行业前沿动向、热爱写科普文章的研究人员原来越少。因此所有的研究回答里都没有人真正说明白无人机到底是什么,而理解无人机到底是什么才是回答这个问题的先决条件。 什么是无人机 首先,无人机就是不载人的飞行器,而说到飞行器,通常我们又可以把飞行器分为三类。 1、固定翼(fixed wing)。平时坐的波音747空客A380,还有F-16歼-15之类的都是固定翼飞机。顾名思义就是翅膀形状固定,靠流过机翼的风提供升力。动力系统包括桨和助推发动机。固定翼根据机翼尺寸的不同还有很多小的分类,在此不细说。固定翼飞行器的优点是在三类飞行器里续航时间最长、飞行效率最高、载荷最大,缺点是起飞的时
[单片机]
无人机设计中<font color='red'>STM32</font>库实现的模拟i2c代码
基于STM32的SNTP授时服务器的研究与设计
0 引言 随着信息技术和网络技术的飞速发展,网络互连已经渗透到国民经济的各行各业。而网络时间同步也越来越受到重视,特别是局域网时间同步在国家安全和国民经济的诸多领域(如国防军工、电信网、金融业、交通运输、电子商务和电力系统等部门)越发不可或缺。随着嵌入式技术的发展,嵌入式与网络时间同步技术的结合,无疑具有良好的发展前景。 1 方案设计 目前网络授时的实现方法有很多种,本文采用自行设计的嵌入式系统并在上面实现SNTP协议。从而完成网络时间的同步。其系统框图如图l所示。 本系统采用C/S模型,分为网络授时同步服务器和客户端两大部分,本文主要对网络授时服务器部分进行研究。 在网络授时同步服务器中,处理器S
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved