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

查看: 5254|回复: 3

STM32笔记(一)TIM模块定时器向上溢出 & 输出比较

[复制链接]

15

主题

31

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2009-1-4 14:15:06 | 显示全部楼层 |阅读模式
这个系列转自九九的博客。 
<div style="text-indent: 2em">首先我们必须肯定ST公司的实力,也承认STM32的确是一款非常不错的Cortex-M3核单片机,但是,他的手册实在是让人觉得无法理解,尤其是其中的TIM模块,没有条理可言,看了两天几乎还是不知所云,让人很是郁闷。同时配套的固件库的说明也很难和手册上的寄存器对应起来,研究起来非常费劲!功能强大倒是真的,但至少也应该配套一个让人看的明白的说明吧~~
  两天时间研究了STM32定时器的最最基础的部分,把定时器最基础的两个功能实现了,余下的功能有待继续学习。
  首先有一点需要注意:FWLib固件库目前的最新版应该是V2.0.x,V1.0.x版本固件库中,TIM1模块被独立出来,调用的函数与其他定时器不同;在V2.0系列版本中,取消了TIM1.h,所有的TIM模块统一调用TIM.h即可。网络上流传的各种代码有许多是基于v1版本的固件库,在移植到v2版本固件库时,需要做些修改。本文的所有程序都是基于V2.0固件库。

  以下是定时器向上溢出示例代码:

C语言: TIM1模块产生向上溢出事件
<div class="source" style="font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'; background-color: #f9f7ed">//Step1.时钟设置:启动TIM1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

//Step2.中断NVIC设置:允许中断,设置优先级
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQChannel;    //更新事件
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   //抢占优先级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;          //响应优先级1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;             //允许中断
NVIC_Init(&NVIC_InitStructure);                             //写入设置

//Step3.TIM1模块设置
void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;


//TIM1 使用内部时钟
//TIM_InternalClockConfig(TIM1);

//TIM1基本设置
//设置预分频器分频系数71,即APB2=72M, TIM1_CLK=72/72=1MHz
//TIM_Period(TIM1_ARR)=1000,计数器向上计数到1000后产生更新事件,计数值归零
//向上计数模式
//TIM_RepetitionCounter(TIM1_RCR)=0,每次向上溢出都产生更新事件
TIM_BaseInitStructure.TIM_Period = 1000;
TIM_BaseInitStructure.TIM_Prescaler = 71;
TIM_BaseInitStructure.TIM_ClockDivision = 0;
TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_BaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_BaseInitStructure);

//清中断,以免一启用中断后立即产生中断
TIM_ClearFlag(TIM1, TIM_FLAG_Update);
//使能TIM1中断源
TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);

//TIM1总开关:开启
TIM_Cmd(TIM1, ENABLE);
}

//Step4.中断服务子程序:
void TIM1_UP_IRQHandler(void)
{
GPIOC->ODR ^= (1
<
回复

使用道具 举报

0

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-4-11 12:56:19 | 显示全部楼层

RE:STM32笔记(一)TIM模块定时器向上溢出 & 输出比较

很好哦  顶了哈~~~
回复 支持 反对

使用道具 举报

3

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-10-27 22:34:21 | 显示全部楼层

回复:STM32笔记(一)TIM模块定时器向上溢出 & 输出比较

楼主简直说出了我的心声啊,那手册写的。。简直了
回复 支持 反对

使用道具 举报

0

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-2-2 15:39:48 | 显示全部楼层

RE:STM32笔记(一)TIM模块定时器向上溢出 & 输出比较

谢谢,正需要这样的资料
回复 支持 反对

使用道具 举报

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