OpenEdv-开源电子网

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

请求帮助 定时器问题

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
发表于 2013-11-26 14:10:51 | 显示全部楼层 |阅读模式

我想用定时器2的定时功能产生一个第一个脉冲波周期为200ms,以后波形周期为400ms的波形,如下图1:

                                                                               图1

写了一个程序,不知错在哪里,产生如图波形如图2

                                                    图2

注:在time.c的程序中使用了定时器的的预装载功能,即ARPE=1,
主程序:
int main(void)
{
      char c=0;
      RCC_Configuration();    //使能外设时钟
     GPIO_Configuration();   //初始化GPIO管脚
      NVIC_Configuration();
      TIM_Configuration() ;
  while(1)
  {
    if (b==0)
        if ((GPIOA->ODR & 1)==1)
       {
        delay_ms(10);//延时10ms
       TIM2->ARR = 400 ;//计数器运行时修改ARR的值,由于ARPE=1,所以应该不会影响影子寄存器
         c=1;
         }  
   }

------------------------------------------------------------
 RCC_Configuration();    //使能外设时钟
在这里面设置系统时钟为72MHz
 GPIO_Configuration();   //初始化GPIO管脚
打开了GPIOA的时钟,并且设置GPIOA.0引脚为推挽输出
NVIC_Configuration();
设置相关的通道
--------------------------------------------------
中断服务程序设置如下:
char a=0x00;
void TIM2_IRQHandler(void)
{
  a=~a;
 GPIOA->ODR=(a & 0x01);
   TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update); // 清除中断标志位
}
------------------------------------------------
定时器2配置设置如下:
 TIM_Configuration() ;
{

    TIM_DeInit(TIM2);
    TIM2->SMCR &= 0xfff8 ;  //配置 TIM 的内部时钟
    TIM2->ARR = 200;    // 自动重装载值
    TIM2->SC = 35999;    //预分频
    TIM2->CR1 |= 0x80 ;   //方向向上计数,开启预装载功能
    TIM2->EGR |= 0x01;      // 软件产生更新事件,所有影子寄存器都被更新
    TIM2->SR &= (~0x01) ;    //清除中断标志
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启定时器2时钟
   TIM2->DIER |= 0x01;   //使能定时器中断
    TIM2->CR1 |= 0x01 ;   //使能计数器
}
-----------------------------------------------------
在ARPE=1,并且在定时器运行时修改了ARR的值,所以影子寄存器的值只能在产生更新事件时更新,如果这样,就不会产生上图2的波形,
而能产生上图1的波形,所以不知错在哪里,请大神指点,O(∩_∩)O谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-27 01:00:24 | 显示全部楼层
软件仿真,可能有问题.不可全信.
建议楼主直接下载到开发板,用示波器测量下输出波形.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-27 12:35:34 | 显示全部楼层
嗯,好的,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 19:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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