OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3395|回复: 3

关于STM8定时器定时时间问题

[复制链接]

13

主题

138

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1095
金钱
1095
注册时间
2015-12-20
在线时间
117 小时
发表于 2017-9-4 15:13:08 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 网络孤客 于 2017-9-4 15:14 编辑

我想通过一个引脚,触发TIM2开始计时,时间到进行其他操作,不循环,触发一次计时一次。
当执行时,触发TIM2开始计时,瞬间就触发中断事件,根本没到我设置的计时时间。
请问,如何解决这问题?

/**************************************************************************************************
* 函    数:Init_Timer2
* 功    能:初始化Timer2
* 参    数:无
* 返    回:无
* 说    明:用于按键输入检查
* 更新日期:2017-9-2
**************************************************************************************************/
void Init_Timer2(void)
{
   //256分频,自动重装值 40000,2M主时钟/(256*( 39999+1),相当于周期为5.2S,
   TIM2_DeInit();
   TIM2_TimeBaseInit(TIM2_PRESCALER_256, 39999);
   TIM2_PrescalerConfig(TIM2_PRESCALER_256, TIM2_PSCRELOADMODE_UPDATE);
   TIM2_SetCounter(0x00);                 //设定计数器的初值0
   TIM2_ARRPreloadConfig(ENABLE);          //允许自动重装
   TIM2_SelectOnePulseMode(TIM2_OPMODE_SINGLE);//在发生下一次更新事件(清除CEN位)时,计数器停止
   TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); //更新中断使能
}

int main( void )
{
   Init_Timer2();
   IO_Init();
   enableInterrupts();   //总中断使能
   u8 Flag = 1;
   while(1)
   {
     if (GPIO_ReadInputPin(Input_GPIO, HS_Pin) && Flag)
     {
       Flag = 0;
       GPIO_WriteLow(Output_GPIO, Work_Pin);   //点亮LED
       TIM2_Cmd(ENABLE);
     }
   }
}

中断
INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
   if (TIM2_GetITStatus(TIM2_IT_UPDATE) != RESET)   //检查 TIM2 更新中断发生与否  
   {
     TIM2_ClearITPendingBit(TIM2_IT_UPDATE);      //清除中断标记
     GPIO_WriteHigh(Output_GPIO, Work_Pin);   //关LED
   }

最佳答案

查看完整内容[请看2#楼]

解决了。 在允许自动重装后增加了: TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE);//由软件产生一个更新事件
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

138

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1095
金钱
1095
注册时间
2015-12-20
在线时间
117 小时
 楼主| 发表于 2017-9-4 15:13:09 | 显示全部楼层
解决了。

在允许自动重装后增加了:
  TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE);//由软件产生一个更新事件
回复

使用道具 举报

头像被屏蔽

2

主题

164

帖子

1

精华

禁止访问

积分
1316
金钱
1316
注册时间
2012-5-13
在线时间
127 小时
发表于 2017-9-26 14:40:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2016-9-14
在线时间
32 小时
发表于 2018-2-9 11:15:13 | 显示全部楼层
学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-27 06:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表