你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

系统滴答的学习笔记

[复制链接]
wambob 发布时间:2015-1-8 11:43
本帖最后由 wambob 于 2015-1-8 12:09 编辑

最近要用到系统滴答来做扫描键盘,看了一些资料.
系统滴答就是一个24位的倒计时定时器,而且能够自动装置。
提到计数器,想必都知道,系统滴答也不例外,也是个计数器.而且是倒计数,当为0时,会出现一个标志位:COUNTFLAG.  可以查询这个标志.用来延时.
系统CM0.H里的定义:
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */

  SysTick->LOAD  = ticks - 1;                                  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
  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 */
}

1.根据定义,可以写个延时函数
Systick.c
#include "systick.h"
void Delay_Nms(int16_tNms)
{
      Syytem->LOAD=(int32_t)Nms*9000;   //装载初值
      SysTick->CTRL|=0x01;                    //开始计时
      while(!(SysTick->CTRL&(1<<16)));   
      SysTick->CTRL=0X00000000;
      SysTick->VAL=0X00000000;
}

systick.h
#ifndef  _SYSTICK_H
#define  _SYSTICK_H
#include "stm32f0xx_conf.h"
void Delay_Nms(uint16_t Nms);
#endif

2.扫描键盘用中断的方法
程序调用core_cm0.c里的SysTick_Config的函数
if(SysTick_Config(SystemCoreClock/100)    //配置滴答频率  1秒/100= 10MS
{
   KeyScan(void);
}

SystemCoreClock 在 system_stm32f0xx.c 中定义为 uint32_t SystemCoreClock =48000000;


  




收藏 评论3 发布时间:2015-1-8 11:43

举报

3个回答
天天晓宇 回答时间:2015-1-8 12:32:16
这个大家几乎都是这么用的
wambob 回答时间:2015-1-8 12:33:59
天天晓宇 发表于 2015-1-8 12:32
这个大家几乎都是这么用的

必须的,刚学习,自己的体会
lovewyufeng 回答时间:2015-1-8 13:00:03
SysTick 不建议用于延时  SysTick 在ARM中有特殊用途

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版