taobao 迷你spring 定时器器,怎么样? 用过的人说说经验啊

【XNUCLEO-F030R8试用体验】之五:定时器之时间我说了算 - Waveshare -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
【XNUCLEO-F030R8试用体验】之五:定时器之时间我说了算
08:16:54  
本帖最后由 zhix*****hong 于
08:19 编辑
话接上贴,上两贴介绍了stm32f0的三要素和点亮LED,这回说说它的定时器。stm32f0的定时器分为以下几种:高级控制定时器、通用定时器和基本定时器。不仅仅是f0,就整个stm32系列来说,其定时器的性能可以说是高级的眼花缭乱。可以满足各种各样的定时、计数甚至一些编码功能。这篇我们简单的介绍下定时器就行好吧,按照望文生义的字面意思来讲,定时器就是用来定时的,我们这讲也就说说基本定时器的定时功能就行,好吧。。。从参考手册上看到,stm32f0这个系列基本定时器有TIM6和TIM7两个,但从其数据手册上看,我们开发板上的stm32f030r8这个片子只有一个基本定时器。
1.jpg (18.26 KB, 下载次数: 12)
08:10 上传
到底我们用的这个片子只有那个定时器,是TIM6还是TIM7呢?从芯片手册的块框图中可以看到,我们用的片子只包含TIM6。
2.jpg (42.01 KB, 下载次数: 10)
08:10 上传
这贴我们就来试着用TIM6定时1s,让led闪烁起来好吧。。。
从参考手册中可以看到TIM6的一些属性,还包括其框图:
3.jpg (27.35 KB, 下载次数: 12)
08:11 上传
从该介绍可以看出,TIM6有如下三个重要的寄存器:
4.jpg (8.89 KB, 下载次数: 12)
08:11 上传
参考手册里还有一些特别细节的内容,比如在定时途中修改重载值会有什么影响等等,这些细节我们这节用不到,就不详细说了,各位看官以后用到的话再回头看也不迟。。。闲话不多说,我们直接上寄存器。第一个关键寄存器是控制寄存器TIMx_CR1。其实基本定时器只有这一个控制寄存器,搞不懂为啥还要弄个编号,搞成CR1。。。可能是为了和高级定时器一致吧。。。这个控制寄存器主要管着定时器6的开关、更新事件的细节还有ARR寄存器是否缓冲等内容。TIMx_DIER寄存器用来控制DMA更新请求的开关、定时器更新中断的开关。TIMx_SR寄存器用来表示定时器是否产生了更新事件。TIMx_EGR寄存器来配置定时器更新时的动作。TIMx_CNT寄存器里面就是计数的值,当前寄存器定时了多久都在这里面保存着。TIMx_PSC寄存器用来设置定时器的预分频器。TIMx_ARR寄存器里面就是定时器的重装值,其实真正管事的是影子寄存器,影子寄存器我们用户是无法操作的。就这么多寄存器,不多,其实直接来看,就这么几个,不要忘了还有中断控制的寄存器啥的,这样我们用定时器用的才放心,对吧。。。拷贝我们上贴的LED文件夹,重命名为TIM6+LED,然后打开工程。
建立timer6.c和timer6.h两个文件,并将.c文件加入工程中。。。如图:
5.jpg (16.41 KB, 下载次数: 10)
08:11 上传
打开固件库帮助文件,按如下路径打开main.c文件:
6.jpg (16.5 KB, 下载次数: 12)
08:12 上传
看到里面定义了初始化TIM6的结构体信息:
7.jpg (9.19 KB, 下载次数: 10)
08:12 上传
这里面虽然多,但我们能用到的也只有第一个和最后一个。。。
打开如下文件:
8.jpg (12.39 KB, 下载次数: 11)
08:12 上传
看到其里面配置的定时器6信息:
9.jpg (39.1 KB, 下载次数: 11)
08:12 上传
这里面好多都不是我们需要的,我们挑有用的抄,如果像我这样懒点,就挑有用的拷贝。。。哈哈。。。
搞定之后,在timer6.h中输入如下内容:
10.jpg (18.76 KB, 下载次数: 11)
08:13 上传
然后在timer6.c中输入:
11.jpg (42.92 KB, 下载次数: 12)
08:13 上传
其中配置了定时器的预分配系数为9。定义了ARR重装值为10000,这样两个配合起来就是1s的时间间隔。
再上面是中断管理配置,配置完成后,在led.c中加入:
12.jpg (6.28 KB, 下载次数: 11)
08:13 上传
并在led.h中声明一下。这里用了寄存器操作,因为查阅固件库,没有合适的固件库函数来翻转io,这样写比较简单。。。
从固件库中拷贝如下文件到User文件夹下
13.jpg (11.4 KB, 下载次数: 12)
08:13 上传
然后在stm32f0xx_it.c中输入:
14.jpg (10.55 KB, 下载次数: 10)
08:14 上传
这样,基本上就算完成了,当然,还需要在该文件中包含led.h头文件,包含头文件这样简单的事情我以后就会少提了,大家敲代码的时候,记得自己包含进去。
完成之后,在main.c中写上如下代码:
15.jpg (15.93 KB, 下载次数: 12)
08:14 上传
这样就算真正完成了。这时候大家编译的时候应该是通不过的,如果头文件包含等其他细节方面没问题,应该会有个错误,提示说TIM6_DAC_IRQn没有定义,这其实是固件库的一个bug,从固件库中拷贝的stm32f0xx.h这个文件中虽然定义了TIM6_DAC_IRQn但实际上我们用的这款芯片并没有真正定义。我最开始遇到该问题的时候很纳闷,难道各类手册说错了,我们用的stm32f030r8里面没有TIM6这个寄存器?这其实是很有可能的,然后,我打开我们之前建立的mdk和iar模板,进入调试模式,查看系统寄存器,里面确实是有TIM6这个寄存器的,这就说明这款芯片实际确实包含这个寄存器,但为什么stm32f0xx.h没有在stm32f030这个宏开关中定义,很有可能就是一个bug,我们查阅手册,发现TIM6的中断入口是17,在这个文件第289行加上这么一行:
16.jpg (73.08 KB, 下载次数: 12)
08:14 上传
然后编译,就会通过了。。。烧写进片子,就可以看到四颗led以1s的频率闪烁了。。。这个实验花了我一个晚上接近两个半小时的时间,中间出了一些问题,我很纳闷,为何很快问题就自己没了。其中一度我打算换到习惯的平台mdk上去进行,后来还是忍住了,在iar上搞了出来。。。说句题外话,其实这个例子很简单,自己写的代码很少,基本上都是在复制拷贝。搞stm32开发甚至搞单片机开发就是这样,技术含量比较低,大把的参考例程,外设很容易就可以驱动起来。实际上最看功力的地方在单片机之外,尤其是算法和操作系统。这也是我很抵触stm32甚至单片机工作的原因,工作中,如果是靠这个吃饭,那么这个活可替代性很强,这年头大二的学生stm32都可以玩的很溜,所以如果想借这个拿高工资,就趁早醒醒吧。。。这里给大家一个建议,stm32玩熟了之后,可以考虑上个ucos或者freertos或其他系统玩玩,但为了长远发展,建议玩熟stm32一年后直接上高端的arm+linux。大家要有心理准备,stm32两个月就可以入门,半年就可以玩的透透的,搞嵌入式linux可能一年都没摸到门在哪,大家如果有时间,可以考研,读研之后,如果还爱好这个方向,利用点滴时间,努力爬进嵌入式linux的大门,嵌入式linux没那么简单,培训也就那么回事,水的很,所以说大家一定要有足够厚的底子再考虑嵌入式linux,如果没有经验就直接上arm+linux,那会死的很惨很惨。。。扯了好多,因为最近看到坛子里又刮起了嵌入式linux培训宣传的一阵风,就说了说自己的深刻体会,仅仅是一家之言,各位网喷请紧闭尊口。。。
这个帖子又挺长了,就到此为止吧,下帖请见:想跑多快就跑多快。
09:11:38  
楼主的建议很实用啊
高级工程师
09:13:06  
楼主写的很详细啊&&给加优秀了&&期待楼主的更新
09:26:33  
楼主写的很详细啊&&给加优秀了&&期待楼主的更新
{:1:}{:1:}{:1:}{:1:}
09:27:06  
楼主的建议很实用啊
切身体会,望后来者少走弯路罢了。。。
6个问题&&&&&&&&3983个浏览
5个问题&&&&&&&&2133个浏览
8个问题&&&&&&&&4088个浏览
每天选一个需要解决的问题,大家一起来帮忙。
授人玫瑰,手有余香
本次讲解答的问题例举:
1、NB-IoT有哪些技术特点和难点?
2、NB-IoT技术对物联网市场将带来什么样的影响。
3、NB-IoT物理层有哪些组成部分?
4、NB-IoT技术如何实现低功耗?
Powered by其他帐号一键登录:
& 多芬的洗发水怎么样?用过的人进来说说
查看: 93649|回复: 53
手机看此贴:
用得意APP扫一扫
微信扫一扫 转发至朋友圈
UID21067&好友&帖子&主题&精华2&小红花189 &积分10017&在线时间2372 小时&注册时间&阅读权限100&最后登录&
UID21067&帖子&精华2&金币4943 &威望66 &注册时间&
杯具了用了十几年的宝洁旗下的洗发水 头发掉得黑死人 准备放弃了
之前看购物达人版有个同学去HOGKONG买了很多DOVE的洗发水回来 隐隐约约记得说很好用的样子
DOVE的洗发水都是港产或者台产的 是不是比大陆货要强些列
还有童鞋用过没 进来说说
日单鞋代购 得意特价 夏款给力清仓中
UID114024&好友&帖子&主题&精华0&小红花61 &积分3490&在线时间1190 小时&注册时间&阅读权限80&最后登录&
UID114024&帖子&精华0&金币1110 &威望0 &注册时间&
那你改用联合利华的洗发水撒 多芬就是旗下的产品
UID144660&好友&帖子&主题&精华0&小红花4 &积分2138&在线时间922 小时&注册时间&阅读权限70&最后登录&
UID144660&帖子&精华0&金币289 &威望1 &注册时间&
同感,同问~而且在超市没看见dove洗发水,为什么呢
------(⊙v⊙)
UID83579&好友&帖子&主题&精华0&小红花310 &积分15282&在线时间4444 小时&注册时间&阅读权限120&最后登录&
UID83579&帖子&精华0&金币6229 &威望33 &注册时间&
屈臣氏有啊·~~昨天还看到了的~~~才上的
UID21067&好友&帖子&主题&精华2&小红花189 &积分10017&在线时间2372 小时&注册时间&阅读权限100&最后登录&
UID21067&帖子&精华2&金币4943 &威望66 &注册时间&
原帖由 subrinaliu 于
11:11 发表
同感,同问~而且在超市没看见dove洗发水,为什么呢
超市是没有卖的
DOVE的洗发水只在香港 台湾销售
不过我在深圳有专门卖港货的店子 所以买得到
之前看一意粉去HK了屯了好多瓶回来 想知道是不是真的那么好用
日单鞋代购 得意特价 夏款给力清仓中
UID12484&好友&帖子&主题&精华24&小红花3650 &积分24271&在线时间5618 小时&注册时间&阅读权限150&最后登录&
UID12484&帖子&精华24&金币10610 &威望485 &注册时间&
只和过沐浴露,总有洗不干净的感觉,太滑了~还没有六神的好~~
尘埃飘荡,终能落定,欣慰何如~
UID21067&好友&帖子&主题&精华2&小红花189 &积分10017&在线时间2372 小时&注册时间&阅读权限100&最后登录&
UID21067&帖子&精华2&金币4943 &威望66 &注册时间&
原帖由 ppannie 于
11:12 发表
屈臣氏有啊·~~昨天还看到了的~~~才上的
真的额 没注意
我们这边华润有卖 长草ING
日单鞋代购 得意特价 夏款给力清仓中
UID156513&好友&帖子&主题&精华0&小红花7 &积分3619&在线时间1694 小时&注册时间&阅读权限85&最后登录&
UID156513&帖子&精华0&金币235 &威望0 &注册时间&
挺好用的,原来在香港买过,后来去香港还特地带了好多回来。
UID164815&好友&帖子&主题&精华0&小红花50 &积分3827&在线时间1459 小时&注册时间&阅读权限85&最后登录&
UID164815&帖子&精华0&金币899 &威望2 &注册时间&
我的头皮很敏感的,每天也要洗头,其实超市的洗发水那个价位上不管什么牌子出什么包装其实都差不多,对我来说负担太大了,容易痒和干燥。
&&我只能用氨基酸做界面活性剂的洗发水,要专业牌子才可以,价位就不会低了。起码是要发廊版的欧莱雅起步,或者更好的卡诗,FF,现在是用的AVEDA。
&&洗发水用得好了,护发素消耗量大,就用不起贵的了,就网购沙宣或者潘婷时光修护系列的中样来用,很便宜的。
UID155622&好友&帖子&主题&精华0&小红花5 &积分957&在线时间369 小时&注册时间&阅读权限1&最后登录&
UID155622&帖子&精华0&金币219 &威望0 &注册时间&
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
UID37522&好友&帖子&主题&精华0&小红花23 &积分8726&在线时间3643 小时&注册时间&阅读权限100&最后登录&
UID37522&帖子&精华0&金币1435 &威望1 &注册时间&
沃尔玛现在都有卖啊 徐东平价也有。。。
UID93406&好友&帖子&主题&精华0&小红花1279 &积分30391&在线时间4703 小时&注册时间&阅读权限150&最后登录&
UID93406&帖子&精华0&金币20416 &威望115 &注册时间&
我在超市还没看到咧
UID20374&好友&帖子&主题&精华0&小红花15 &积分8447&在线时间3834 小时&注册时间&阅读权限100&最后登录&
UID20374&帖子&精华0&金币773 &威望2 &注册时间&
超市都有卖的,很喜欢多芬的东西
UID94594&好友&帖子&主题&精华0&小红花35 &积分2750&在线时间630 小时&注册时间&阅读权限75&最后登录&
UID94594&帖子&精华0&金币1445 &威望9 &注册时间&
内地现在已经有dove的洗发系列卖了啊!广告都打出来了,刚刚推出没多久。。。
以后终于可以跟lux换着用了。。。我也不用宝洁的东西!
UID40990&好友&帖子&主题&精华0&小红花760 &积分14475&在线时间3594 小时&注册时间&阅读权限100&最后登录&
UID40990&帖子&精华0&金币7150 &威望28 &注册时间&
中百都有卖的~·
跟其他的没什么区别
UID102685&好友&帖子&主题&精华0&小红花4 &积分3884&在线时间1644 小时&注册时间&阅读权限85&最后登录&
UID102685&帖子&精华0&金币578 &威望4 &注册时间&
UID50590&好友&帖子&主题&精华1&小红花268 &积分6157&在线时间1744 小时&注册时间&阅读权限90&最后登录&
UID50590&帖子&精华1&金币2509 &威望32 &注册时间&
屈臣氏有卖的
用了1个多月了冒得感觉
UID20699&好友&帖子&主题&精华0&小红花120 &积分10121&在线时间3111 小时&注册时间&阅读权限100&最后登录&
UID20699&帖子&精华0&金币3819 &威望16 &注册时间&
洗发水不好用,护发素还可以,味道很香。便宜量又多。。我去香港的时候买了2大瓶。1瓶才40多港币的样子。。很划算。。。可以闭着眼睛瞎按都不心疼。。
UID115835&好友&帖子&主题&精华0&小红花112 &积分2389&在线时间655 小时&注册时间&阅读权限1&最后登录&
UID115835&帖子&精华0&金币949 &威望26 &注册时间&
提示: 作者被禁止或删除 内容自动屏蔽
UID146538&好友&帖子&主题&精华0&小红花39 &积分3478&在线时间1148 小时&注册时间&阅读权限80&最后登录&
UID146538&帖子&精华0&金币1177 &威望1 &注册时间&
我巨爱多芬夜用的润肤乳。。。香味大爱啊。。
& && &夜用。。。润肤也分日夜,囧一个。。
婚期:& &酒店:金色池塘& &婚纱照:薇拉& &婚庆:婚嫁喜铺& &跟拍:fanstudios& & 摄像:艺镜视觉&&思凡+泰勇&&跟妆:MIA--佳丽& &婚纱:MIA& &司仪:吕磊
版权所有& Powered by说说Angular中的$timeOut定时器 - 推酷
说说Angular中的$timeOut定时器
非常不幸的一点是,人们似乎常常将AngularJS中的$timeOut()函数看做是一个内置的、无须在意的函数。但是,如果你忘记了$timeOut()的回调函数将会造成非常不好的影响,你可能会因此遇到代码莫名其妙的出现问题,或者无端抛出一个错误甚至是一遍一遍的重复对的你的服务器进行$http请求这些诡异的情形。管理好你的$timeOut定时器的小技巧就是在$destory事件中将它们取消。
和Javascript中原生的setTimeout()以及setInterval()函数不同,AngularJS中的$timeOut()函数会返回一个promise。和其他的promise一样,你可以绑定$timeOut的resolved和rejected时间。然而更重要的是,你可以通过将这个promise传递给$timeOut.cancel()方法来取消掉潜在的定时器。
在一个AngularJS应用中,这一点非常的重要,因为定时器可以结束执行那些不再与应用状态和用户界面相关的代码。最佳情形中,这些过程都会悄悄的发生;在不好的情况下,它会引起不可预测的行为并导致很差的用户体验。为了让应用顺畅的运行,你应该总是把握好你的$timeOut定时器;你需要在相应的控制器和指令接收到$destory事件时调用$timeOut.cancel()方法。
为了更加清楚的说明这点,下面的这个例子将会有一些DOM元素通过ngSwitch/ngSwitchWhen指令来创建或销毁。注意到当$destory事件被触发时(在这里的例子中是位于指令中),我们将取消当前的定时器:
&!doctype html&
&html ng-app=&Demo& ng-controller=&DemoController&&
&meta charset=&utf-8& /&
Don't Forget To Cancel $timeout Timers In Your $destroy Events In AngularJS
Don't Forget To Cancel $timeout Timers In Your $destroy Events In AngularJS
&a href=&#& ng-click=&toggle()&&Toggle Section&/a&
&div ng-switch=&section&&
&p ng-switch-when=&happy& bn-directive&
&p ng-switch-when=&sad& bn-directive&
&!-- Load jQuery and AngularJS. --&
type=&text/javascript&
src=&../../vendor/jquery/jquery-2.0.3.min.js&&
type=&text/javascript&
src=&../../vendor/angularjs/angular-1.0.7.min.js&&
&script type=&text/javascript&&
//为我们的demo创建一个应用模块
var app = angular.module( &Demo&, [] );
// -------------------------------------------------- //
// -------------------------------------------------- //
// 定义控制器
app.controller(
&DemoController&,
function( $scope ) {
$scope.section = &happy&;
//在toggle函数中改变section的值,以此在标记中显示/隐藏不同的部分
$scope.toggle = function() {
if ( $scope.section === &happy& ) {
$scope.section = &sad&;
$scope.section = &happy&;
// -------------------------------------------------- //
// -------------------------------------------------- //
//定义指令
app.directive(
&bnDirective&,
function( $timeout ) {
//将用户界面的事件绑定到$scope上
function link( $scope, element, attributes ) {
//当timeout被定义时,它返回一个promise对象
var timer = $timeout(
function() {
console.log( &Timeout executed&, Date.now() );
//将resolve/reject处理函数绑定到timer promise上以确保我们的cancel方法能正常运行
timer.then(
function() {
console.log( &Timer resolved!&, Date.now() );
function() {
console.log( &Timer rejected!&, Date.now() );
//当DOM元素从页面中被移除时,AngularJS将会在scope中触发$destory事件。这让我们可以有机会来cancel任何潜在的定时器
$scope.$on(
&$destroy&,
function( event ) {
$timeout.cancel( timer );
//返回指令的配置
link: link,
scope: false
一般来说,放任$timeOut定时器可能不会有多大的影响。但是最好的做法是将它cancel掉,因为它有可能会造成很差的用户体验(或者想你的服务器发出不必要的请求)。这一点对于控制器和指令来说同样重要。
本文译自Don’t Forget To Cancel $timeout Timers In Your $destroy Events In AngularJS,原文地址为
如果你觉得本文对你有帮助,请点击为我
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 定时器 的文章

 

随机推荐