OpenEdv-开源电子网

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

TIM_OCMode_Timing模式

[复制链接]

3

主题

11

帖子

0

精华

新手上路

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

keil MDK4.12能否进行定时器TIM_OCMode_Timing模式仿真????我写了程序,连续检查了4天,看了一些网上程序,包括stm32自带的程序,论坛中的程序也看了,就是不能进入捕获比较中断,跪求解释!!

#include "stm32f10x_lib.h"   //包含了所有的头文件
void RCC_Configuration(void);
void NVIC_Configuration(void);
void GPIO_Configuration(void);
void TIM_Configuration(void);

int main(void)
{

 #ifdef DEBUG
   debug();
 #endif

   RCC_Configuration();    //使能外设时钟
   GPIO_Configuration();   //初始化GPIO管脚
  NVIC_Configuration();  //中断优先级设置
  TIM_Configuration() 
 while(1);
}

//--------Tim2设置---------------------------
void TIM_Configuration(void)
{
 
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 TIM_OCInitTypeDef    TIM_OCInitStructure;

 TIM_DeInit(TIM2);
 TIM_TimeBaseStructure.TIM_Period = 400;     
 TIM_TimeBaseStructure.TIM_Prescaler = 35999; 
 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;   //设置时钟分割系数
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
 TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;         
  TIM_OCInitStructure.TIM_Channel = TIM_Channel_1;         
  TIM_OCInitStructure.TIM_Pulse = 200; 
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OC1Init(TIM2, &TIM_OCInitStructure);

 TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE );  //使能中断
  TIM_InternalClockConfig(TIM2);  //配置 TIM 的内部时钟
  TIM_Cmd(TIM2,ENABLE);//使能TIM2
}

//----------GPIO设置--------------------------
void GPIO_Configuration(void) 
{
 GPIO_InitTypeDef GPIO_InitStructure;
 GPIO_DeInit(GPIOA);    //初始化
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    // 推挽输出
 GPIO_Init(GPIOA,&GPIO_InitStructure);
}
//-------------设置时钟72mhz------------------------------
void RCC_Configuration(void)
{
 RCC_DeInit();    //初始化
 RCC_HSEConfig(RCC_HSE_ON);   //时钟使能
 while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);  //等待高速时钟就绪
 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); 
 FLASH_SetLatency(FLASH_Latency_2);      
 RCC_HCLKConfig(RCC_SYSCLK_Div1);   
 RCC_PCLK2Config(RCC_HCLK_Div1);   
 RCC_PCLK1Config(RCC_HCLK_Div2);     
 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); ////使用锁相环输出72Mhz
 RCC_PLLCmd(ENABLE);        // Enable PLL
 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  // Wait till PLL is ready
 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);    
 while(RCC_GetSYSCLKSource() != 0x08);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启定时器2时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, ENABLE); // 使能外设时钟
}

----------------------------------------------
void NVIC_Configuration(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;
 NVIC_DeInit();
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);   
 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;  
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 7;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE ;
 NVIC_Init(&NVIC_InitStructure);
}
-------------中断函数---------------------------
char a=0x00;
void TIM2_IRQHandler(void)
{
   a=~a;
 GPIOA->ODR=(a&0x01);
    TIM_ClearITPendingBit(TIM2, TIM_IT_CC1); // 清除中断标志位
}

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

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-12-2 17:19:11 | 显示全部楼层
原子的《标准例程-V3.5库函数版本》程序中是否有TIM_OCMode_Timing模式的,我看到里面有 定时器中断实验、 WM输出实验
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-12-2 19:01:14 | 显示全部楼层
回复【2楼】XINSHOU0:
---------------------------------
有输入捕获模式.
没有OCMode_Timing的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-12-2 20:02:05 | 显示全部楼层

哦,对不起原子哥,打错了,库函数中如下: 

/* TIM Output Compare and PWM modes -----------------------------------------*/
 
#define TIM_OCMode_Timing                  ((u16)0x0000)    // TIM输出比较时间模式
#define TIM_OCMode_Active                  ((u16)0x0010)   
#define TIM_OCMode_Inactive                ((u16)0x0020)  
#define TIM_OCMode_Toggle                  ((u16)0x0030)  
#define TIM_OCMode_PWM1                    ((u16)0x0060)  
#define TIM_OCMode_PWM2                    ((u16)0x0070)  


求原子哥、大神们指点,万分感谢!

回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-12-2 20:23:55 | 显示全部楼层
原子哥,很佩服你,我看了一下论坛,基本上,每一个问题你都回复了,帮助解答。下午看你不在线,发现论坛中,有不少显示回复数目为0的,现在我再上线,全部有了回复,显示原子哥回复,你能解答这么多提问,确实超厉害,崇拜你……很感谢
回复 支持 反对

使用道具 举报

12

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2014-9-13
在线时间
31 小时
发表于 2017-3-5 22:57:50 | 显示全部楼层
想请问这里加这个函数干吗 TIM_InternalClockConfig(TIM2);  //配置 TIM 的内部时钟
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2019-5-6
在线时间
9 小时
发表于 2020-2-9 11:54:59 | 显示全部楼层
我也遇到了这个问题,用TIM_OCMode_Timing模式进不了中断,我也想输出pwm,我用官方库里的这个模式也输出不了,有问题....几天了都没解决....
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 08:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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