打印
[开发工具]

STM32用KEIL MDK3.12的TIM目录下的EXAMPLE1例程OC遇到问题求教

[复制链接]
3762|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
alien2006|  楼主 | 2007-11-24 09:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我直接加载KeilARMExamplesSTSTM32F10xTIMExample1中的项目文件编译正常,下载到STM32F103VB评估板后,测试PC0/PC1/PC2/PC3四个脚的波形,却发现都是一样的波形大约100HZ不到的方波,而按照readme的说明
This example shows how to configure the TIM2 peripheral to generate four different 
signals with four different frequencies.

The TIM2CLK frequency is set to 36 MHz, the Prescaler is set to 0x2, and used in 
Output Compare Toggle Mode.

TIM2 counter clock = TIMxCLK / (Prescaler +1) = 12 MHz 

The TIM2 CC1 register value is equal to 0x8000: 
CC1 update rate = TIM2 counter clock / CCR1_Val = 366.2 Hz,
so the TIM2 Channel 1 generates a periodic signal with a frequency equal to 183.1 Hz.

The TIM2 CC2 register is equal to 0x4000:
CC2 update rate = TIM2 counter clock / CCR2_Val = 732.4 Hz
so the TIM2 channel 2 generates a periodic signal with a frequency equal to 366.3 Hz.

The TIM2 CC3 register is equal to 0x2000:
CC3 update rate = TIM2 counter clock / CCR3_Val = 1464.8 Hz
so the TIM2 channel 3 generates a periodic signal with a frequency equal to 732.4 Hz.

The TIM2 CC4 register is equal to 0x1000:
CC4 update rate = TIM2 counter clock / CCR4_Val =  2929.6 Hz
so the TIM2 channel 4 generates a periodic signal with a frequency equal to 1464.8 Hz. 

    应该是输出4个不同频率的OCX输出啊,甚至文档都给出了四个波形的示波器的图形,可是不知为什么我编译后会成这样。我是直接加载该项目文件然后什么都没修改,直接BUILD ALL然后用ULINK下载到FLASH的。
/* ---------------------------------------------------------------
  TIM2 Configuration: Output Compare Toggle Mode:
  TIM2CLK = 36 MHz, Prescaler = 0x2, TIM2 counter clock = 12 MHz 
  CC1 update rate = TIM2 counter clock / CCR1_Val = 366.2 Hz
  CC2 update rate = TIM2 counter clock / CCR2_Val = 732.4 Hz 
  CC3 update rate = TIM2 counter clock / CCR3_Val = 1464.8 Hz 
  CC4 update rate = TIM2 counter clock / CCR4_Val =  2929.6 Hz 
--------------------------------------------------------------- */

  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 0xFFFF;          
  TIM_TimeBaseStructure.TIM_Prescaler = 0x02;       
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
  
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  /* Output Compare Toggle Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;          
  TIM_OCInitStructure.TIM_Channel = TIM_Channel_1;          
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;  
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  TIM_OCInit(TIM2, &TIM_OCInitStructure);

  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);
  
  /* TIM enable counter */
  TIM_Cmd(TIM2, ENABLE);
    昨晚还试了ST网站上下载的该例程也是如此情况,发现上面程序中修改CCR1_VAL的值,PA0的输出也是没有任何改变,其他CHANNEL也都如此,着实不解。哪位能帮我看看,究竟是啥原因啊,谢谢
沙发
alin_99| | 2007-11-24 17:05 | 只看该作者

不错啊

这个程序 我用软仿真, 可惜没license仿不了.

你用的是评估版?

使用特权

评论回复
板凳
alien2006|  楼主 | 2007-11-24 18:59 | 只看该作者

我也是用的MDK3.12的评估版,有16K限制,

   不过用来编译例程学习也暂时也够了,3.12上面用CORTEX-M3内核的问题还真不少,不知道啥时候就踩到地雷了,这个例程昨晚我搞了快到凌晨3点了,都快疯了,到现在还不知道是怎么回事呢。
    用软件模拟仿真,硬件JTAG仿真显示的相关寄存器状态都正常,可是就是频率不对,似乎CCR的寄存器没有作用,改变APR的数值频率有所变化,可是也跟公式对不上,今天下午又反复实验的,TIM3/TIM4又挨个试了CHANNEL1~CHANNEL4都是同样的问题,都搞毛了,真不知道是哪里不对啊。
    另外看KEIL网站上新出了3.15B版本,说是基本完成了软件仿真功能。也不知道哪里有评估版可以下来试试啊

使用特权

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

本版积分规则

16

主题

136

帖子

6

粉丝