STM32学习之路-SysTick的应用(时间延迟)

开发板:奋斗V5

好~ 菜B要来搞实验了.. 

前面已经说了SysTick的工作原理什么的了,这里就不说了.. 先来做第一个实验:

盗自奋斗的样例,嘿嘿, 用SysTick产生1ms的基准时间,产生中断,每秒闪烁一次(LED1 V6)

(1)外围时钟初始化(系统时钟初始化这里就不写了,上次说了)

(2)LED初始化

(3)SysTick配置

(4)中断优先级

(5)中断处理函数

(6)延迟函数

OK,上代码:

(1)外围时钟初始化

void RCC_Config(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF |RCC_APB2Periph_GPIOG, ENABLE);}
(2)LED时钟初始化

void LED_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);
}
(3)SysTick_Config配置
if (SysTick_Config(72000)) //SysTick_Config: return 0->success 1->failure
{
<span style="white-space:pre">	</span>while(1);
}	
好吧.. 这里看看这个库函数的内容吧

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 */
}
能够看到, 这家伙是有返回值的, 成功的话就返回0 , 所以为什么上面要设置一个if(),原因就是为了检測是不是SysTick的配置是不是成功了, 假设没成功,就返回1, 就进入while(1)了, 当然你也能够不要用推断,仅仅只是你可能在错误发生的时候你没法察觉到而已.或者你还能够在设置下,假设错误发生了,还有一盏灯就一直亮也行..

还有就是你给的初始计数值不要大于0xFF FF FF, 大于这家伙就会错误发生了,为什么? LOAD寄存器仅仅有24位.你比它还大,它怎么受得了..哈哈

好,这里还能够看到,NVIC_setPriority(SysTick_IRQn, (1<<_NVIC_PRIO_BITS)-1) 这里就是设置SysTick中断优先级的地方了,详细设置了哪个优先级,回去看看前面

关于优先级的文章吧.. 

(5)中断处理函数

在system32f10x_it.c中

并在该文件前面加上SysTickTimeCont_Delay()的定义:extern void SysTickTimeCont_Delay(); 由于我们在main.c文件中面还要用它

void SysTick_Handler(void)
{SysTickTimeCount_Delay();
}
(6)延迟函数

void Delay(u32 times)
{SysTickTimeCount = times;while (SysTickTimeCount != 0);
}void SysTickTimeCount_Delay(void)
{if (SysTickTimeCount != 0)SysTickTimeCount--;
}
这两个加起来才干算是延迟的了.. 
主函数

int main(void)
{RCC_Config();LED_Config();if (SysTick_Config(72000)) //SysTick_Config: return 0->success 1->failure{while(1);}	while(1){GPIO_SetBits(GPIOB, GPIO_Pin_5);Delay(500);GPIO_ResetBits(GPIOB, GPIO_Pin_5);Delay(500);}	
}
以下看图:


非常明显,美工没在家,哈哈哈... 1ms * (500+500) = 1s 这样就是实现了1s中闪烁一次了..



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

凡事预则立(Beta)

听说——凡事预则立 吸取之前alpha冲刺的经验教训&#xff0c;也为了这次的beta冲刺可以更好更顺利地进行&#xff0c;更是为了迎接我们的新成员玮诗。我们开了一次组内会议&#xff0c;进行beta冲刺的规划。 上一张我们的合照&#xff1a; 具体会议议程如下&#xff1a; 1、讨…

用Vue.js开发一个电影App的前端界面

我们要构建一个什么样的App&#xff1f; 我们大多数人使用在线流媒体服务&#xff08;如Netflix&#xff09;观看我们最喜欢的电影或者节目。这篇文章将重点介绍如何通过使用vue.js 2 建立一个类似风格的电影流媒体WEB交互界面&#xff08;见上图&#xff09;。 最终的产品可以…

eclipse 函数折叠展开

为什么80%的码农都做不了架构师&#xff1f;>>> 一、eclipse 代码块折叠显示 核查是否开启折叠功能全局folding(window->preference->Gerneral->Editor-Structured Text)右侧Appearance 勾选Enable folding检测对应源编辑&#xff08;java/javaScript&…

mysql 引擎 校对,MySQL 字符集和校对

字符集是指一种从二进制编码到某类字符符号的映射&#xff0c;校对是一组用于某个字符集的排序规则。每一类编码字符都有其对应的字符集和校对规则MySQL 如何使用字符集每种字符集都可能有多种校对规则&#xff0c;并且都有一个默认的校对规则。每个校对规则都是针对某个特定的…

【研究】Metasploit自动攻击模块

环境&#xff1a;kali-linux-2017.3-vm-amd64 一、安装postgresql数据库 apt-get install postgresql apt-get install rubygems libpq-dev apt-get install libreadline-dev apt-get install libssl-dev apt-get install libpq5 apt-get install ruby-dev apt-get install lib…

让nginx支持thinkphp rewrite模式

为什么80%的码农都做不了架构师&#xff1f;>>> Nginx环境在Nginx低版本中&#xff0c;是不支持PATHINFO的&#xff0c;但是可以通过在Nginx.conf中配置转发规则实现&#xff1a;在nginx配置文件中添加 location / { if (!-e $request_filename) { rewrite ^(…

WPS怎样设置多级标题(如四级标题)

WPS期初&#xff0c;乍一看最多只能设置三级标题。 怎样设置四级以上标题呢&#xff1f; 这里以设置四级标题为例&#xff1a; 点击‘视图’->大纲, 假如&#xff0c;现在2.3.3这一行是三级标题&#xff1a; 在下拉框里选择‘4级’就可以了。 现在可以回到普通页面上&#x…

matlab实现主成分分析(遥感图像处理)

数据说明&#xff1a;采用的数据源是从别人那里拷的2012年全年的Sea Surface Temperature&#xff08;海标温度&#xff0c;SST&#xff09;数据&#xff0c;一直想找一份比较好的主成分分析数据&#xff0c;也没找到。 Matlab自身有主成分分析的函数princomp&#xff0c;其中返…

SQL Server中关于跟踪(Trace)那点事

前言 一提到跟踪俩字&#xff0c;很多人想到警匪片中的场景&#xff0c;同样在我们的SQL Server数据库中“跟踪”也是无处不在的&#xff0c;如果我们利用好了跟踪技巧&#xff0c;就可以针对某些特定的场景做定向分析&#xff0c;找出充足的证据来破案。 简单的举几个应用场景…

php怎么获取用户所在地址,php获取客户端ip及获取ip所在地址

// 获取ipfunction ip(){if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))$ip $_SERVER["HTTP_X_FORWARDED_FOR"];else if (isset($_SERVER["HTTP_CLIENT_IP"]))$ip $_SERVER["HTTP_CLIENT_IP"];else$ip $_SERVER["REMOTE_ADDR&…

php若$a没定义默认是,PHP之错误处理详解

PHP之错误处理详解错误报告PHP程序的错误发生一般归属于下列三个领域&#xff1a;1、语法错误语法错误最常见&#xff0c;并且也容易修复。如&#xff1a;代码中遗漏一个分号。这类错误会阻止脚本的执行2、运行时错误这种错误一般不会阻止PHP脚本的执行&#xff0c;但会阻止当前…

热血沙城-3.2移植-古月-cocos2dx源码

最近发现我去年学习2dx的时候移植过的一个游戏现在被放在网上出售 真是有点想笑 本人比较喜欢武侠风格的游戏&#xff0c;当时9秒开源了热血沙城 本着学习的态度 从2.1.2移植到3.2 用了一周的时间 中间各种报错 大概修改了1000多处错误 同时增加了支持摇杆 后来放到9秒上开源&…

【openjudge 1.11 07】和为给定数

我看到这个的第一反应就是爆搜&#xff0c;然后写了一个没加$No$的4分程序 #include <bits/stdc.h> #include <algorithm> #define it int #define fr for #define il inline using namespace std; it book[100020],t[100020]; it spe[50010]; it n,m,bz0; it main…

matlab用泰勒展开解微分方程,mathematica的解微分方程的能力让人大失所望啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Clear["Global*"]c 299792458*10^2(*光速&#xff0c;单位cm/s*)G 6.67259*10^-8(*gravitational constant&#xff0c;引力常数&#xff0c;单位cm^3/g*s^2*)Msun 1.9891*10^33(*Subscript[M, \[CircleDot]]&#xf…

Python爬虫入门项目

Python是什么 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间&#xff0c;为了打发无聊的圣诞节而编写的一个编程语言。 创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus&#xff08;中文&#xff1a;蒙提派森的飞行马戏团&#xff09;的狂热粉…

spring boot 启动类

做项目用到spring boot 感觉spring boot用起来比较流畅。想总结一下&#xff0c;别的不多说&#xff0c;从入口开始。 spring boot启动类Application.class 不能直接放在main/java文件夹下 一、spring boot的入口启动类概览。 import org.springframework.context.annotation.B…

FlashFXP使用教程

点FlashFXP菜单栏“站点-站点管理”打开站点管理器。然后点新建站点&#xff0c;输入站点名称&#xff08;随意&#xff09;&#xff0c;确定。 编辑站点管理器里新建的站点的相关信息&#xff0c;包括站点名称、地址、用户名称、密码等。编辑完成&#xff0c;点应用保存站点信…

你的工作单位也需善待

善待这个词&#xff0c;常常和家人、朋友联系在一起&#xff0c;其实你不仅要善待家人和朋友&#xff0c;还要善待你所在的工作单位。单位给了你创造财富生存的机会&#xff0c;给了你发挥聪明才智的平台&#xff0c;给了你体现人生价值的天空&#xff0c;所以要善待它。在单位…

识别图片baidu ai php,PHP+百度AI OCR文字识别实现了图片的文字识别功能

第一步可定要获取百度的三个东西 要到百度AI网站(http://ai.baidu.com/)去注册 然后获得-const APP_ID 请填写你的appid;-const API_KEY 请填写你的API_KEY;-const SECRET_KEY 请填写你的SECRET_KEY;第二步下载SDK或者使用官方的 http://ai.baidu.com/sdk 下载第三步 然后就…

深入理解javascript原型和闭包(4)——隐式原型

注意&#xff1a;本文不是javascript基础教程&#xff0c;如果你没有接触过原型的基本知识&#xff0c;应该先去了解一下&#xff0c;推荐看《javascript高级程序设计&#xff08;第三版&#xff09;》第6章&#xff1a;面向对象的程序设计。 上节已经提到&#xff0c;每个函数…