你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 6788|回复: 2

STM32-F103 TIM1不能用

[复制链接]

2

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
2017-11-23
发表于 2011-1-23 18:06:01 | 显示全部楼层 |阅读模式
不知道干什麼我的TIM1用不了,同樣的設置TIM2,3,4都可以用,以下是我的code,請各位指點一下。
#define ENCODER_TIMER   TIM1  // Encoder unit connected to TIM1
#define ENCODER_TIM_PERIOD (u16) 10000   // number of pulses per revolution
#define TIMx_Channel  TIM1_UP_IRQn//TIM4_IRQn     //Timer channel
#define TIMx_PRE_EMPTION_PRIORITY 0
#define TIMx_SUB_PRIORITY 1
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
int32_t tick;
int32_t mag;
/* Private function prototypes -----------------------------------------------*/

/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name  : ENC_Init
* Description    : General Purpose Timer x set-up for encoder speed/position
*                  sensors
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void timer1_Init(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  /* TIM1 clock source enable */
  RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
 
  #ifdef VECT_TAB_RAM
    NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
    #else
    NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
  #endif
  NVIC_InitStructure.NVIC_IRQChannel = TIMx_Channel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  /* Timer configuration in Encoder mode */
  TIM_DeInit(ENCODER_TIMER);
 
  TIM_TimeBaseStructure.TIM_Prescaler = 719;  // APB2=72M 72M/(71+1)=1M
  TIM_TimeBaseStructure.TIM_Period = ENCODER_TIM_PERIOD;  //count 100 reset to 0
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;   
  TIM_TimeBaseInit(ENCODER_TIMER, &TIM_TimeBaseStructure);
  //TIM_ARRPreloadConfig(TIM1, ENABLE);
  //TIM_GenerateEvent(TIM1, TIM_EventSource_Update);
  // Clear all pending interrupts
  TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);
  TIM_ClearITPendingBit(ENCODER_TIMER, TIM_IT_Update);
  //enable interrupt
  TIM_ITConfig(ENCODER_TIMER, TIM_IT_Update, ENABLE);
  //TIM_Cmd(TIM1, ENABLE);
  TIM_Cmd(ENCODER_TIMER, ENABLE);
  //TIM_CtrlPWMOutputs(TIM1, ENABLE);  
}


/******************************************************************************/
/*                 STM32F10x Peripherals Interrupt Handlers                   */
/*  Add here the Interrupt Handler for the used peripheral(s) (PPP), for the  */
/*  available peripheral interrupt handler's name please refer to the startup */
/*  file (startup_stm32f10x_xx.s).                                            */
/******************************************************************************/
/**
  * @brief  This function handles TIM5 global interrupt request.
  * @param  None
  * @retval None
  */
void TIM1_UP_IRQHandler(void)
{  
  tick=tick+1;
  mag=PID_data_update2(0);
  /* Clear the interrupt pending flag */
  TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);
  TIM_ClearITPendingBit(ENCODER_TIMER, TIM_IT_Update);
}
<
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-1-24 08:59:52 | 显示全部楼层

RE:STM32-F103 TIM1不能用

TIM1的设置和其他的设置是不一样的,你可以去看看例程和手册说明。
回复 支持 反对

使用道具 举报

0

主题

47

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-4-13 12:24:20 | 显示全部楼层

RE:STM32-F103 TIM1不能用

RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
这里错误
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版