打印
[STM8]

对于TIMx_EGR的UG位

[复制链接]
1088|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
@jd|  楼主 | 2019-9-1 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
mx, TI, UG, hz, ps
本帖最后由 @jd 于 2019-9-1 15:20 编辑
void Timer4Init()
{
  TIM4_IER_bit.TIE = 0;           // 禁止(触发)中断
  TIM4_IER_bit.UIE = 0;           // 产生
  TIM4_EGR_bit.UG = 1;            // 允许产生更新事件
  TIM4_PSCR_bit.PSC = 7;          // 计数器时钟=主时钟16MHz / 128 = 125KHz (每8us计数值加1)
                                                           
  TIM4_ARR = 125;                 //设定定时器4产生1毫秒重装载时的计数值,255是最大值
  TIM4_CNTR = 0x00;               // 设定计数器的初值
}
/*******************************************************************************
**函数名称:void TIM4Delayms(unsigned int ms)
**功能描述:定时器4参进行精确延时,最小为1毫秒,最大65535
**入口参数:unsigned int ms     1=< ms <= 65535
**输出:无
*******************************************************************************/
void TIM4Delayms(unsigned int ms)
{
  TIM4_CNTR = 0x00;                // 设定计数器的初值
  TIM4_CR1_bit.CEN = 1;            //启动定时器4开始计数
  while(ms--)
  {
    while(TIM4_SR_bit.UIF == 0);  //等待计数是否达到1毫秒
    TIM4_SR_bit.UIF = 0;          //计数完成1毫秒,清除相应的标志
  }
  TIM4_CR1_bit.CEN = 0;          //延时全部结束,关闭定时器4
}


我对代码中UG位置1,具体什么作用不太清楚,对这段程序来讲,对UG置1,TIM4是不是立即重新初始化了,而延时不需要中断,只需要更新就行?还有就是TIM4的精确延时最大为65535

使用特权

评论回复
沙发
mmuuss586| | 2019-10-1 17:24 | 只看该作者

使用特权

评论回复
板凳
aoyi| | 2019-10-12 08:38 | 只看该作者
这位是干嘛用的

使用特权

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

本版积分规则

@jd

4

主题

5

帖子

0

粉丝