打印

sw笨笨的STM32笔记之十二:时钟不息工作不止,systic时钟应

[复制链接]
2485|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sw笨笨|  楼主 | 2009-2-27 23:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
a)        目的:使用系统时钟来进行两项实验——周期执行代码与精确定时延迟。
b)        初始化函数定义:
void SysTick_Configuration(void);
c)        初始化函数调用:
SysTick_Configuration();
d)        初始化函数:
void SysTick_Configuration(void)
{
  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//时钟除8
  SysTick_SetReload(250000);                                                    //计数周期长度
  SysTick_CounterCmd(SysTick_Counter_Enable);                   //启动计时器
  SysTick_ITConfig(ENABLE);                                                     //打开中断
}
e)        在NVIC的初始化函数里面增加以下代码打开相关中断:
NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 1, 0);//中断等级设置,一般设置的高一些会少受其他影响

f)        在stm32f10x_it.c文件中找到void SysTickHandler 函数
void SysTickHandler(void)
{
执行代码
}

g)        简单应用:精确延迟函数,因为systic中断往往被用来执行周期循环代码,所以一些例程中使用其中断的启动和禁止来编写的精确延时函数实际上不实用,我自己编写了精确计时函数反而代码更精简,思路更简单。思路是调用后,变量清零,然后使用时钟来的曾变量,不断比较变量与延迟的数值,相等则退出函数。代码和步骤如下:
i.        定义通用变量:u16 Tic_Val=0; //变量用于精确计时
ii.        在stm32f10x_it.c文件中相应定义:
extern u16 Tic_Val;//在本文件引用MAIN.c定义的精确计时变量
iii.        定义函数名称:void Tic_Delay(u16 Tic_Count);//精确延迟函数
iv.        精确延时函数:
void Tic_Delay(u16 Tic_Count)               //精确延时函数
{         Tic_Val=0;                           //变量清零
  while(Tic_Val != Tic_Count){printf("");}//计时
}
v.        在stm32f10x_it.c文件中void SysTickHandler 函数里面添加
     Tic_Val++;//变量递增
vi.        调用代码:Tic_Delay(10);   //精确延时
vii.        疑问:如果去掉计时行那个没用的printf("");函数将停止工作,这个现象很奇怪。
沙发
程序匠人| | 2009-2-27 23:50 | 只看该作者

事实证明,叫“笨笨”的未必真笨。欧耶!

使用特权

评论回复
板凳
McuIsp| | 2009-3-1 07:59 | 只看该作者

友情提示:不能工作,请用volatile

使用特权

评论回复
地板
HotC51| | 2009-3-1 08:33 | 只看该作者

友情提示:出手就搞个ST_REG~~~

使用特权

评论回复
5
sw笨笨|  楼主 | 2009-3-1 10:29 | 只看该作者

谢谢McuIsp

感谢感谢,这很重要。看来应该大量使用V字头变量定义了,因为都是来自硬件的变量更改。这是我的注意事项里面的最后一个疑问,感谢为我解决了这个问题!!

volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

使用特权

评论回复
6
ABCBA| | 2009-3-12 11:40 | 只看该作者

路过

使用特权

评论回复
7
ST_ARM| | 2009-3-12 21:22 | 只看该作者

比较欣赏这些用心钻研的工程师

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

31

帖子

0

粉丝