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

STM32F030K6的TIM1定时功能不工作

[复制链接]
huangjiayin 提问时间:2014-11-25 09:12 /
下面的2个函数在TIM3,TIM14,TIM16运行(定时功能)都没问题,但改用在TIM1的定时功能的话,整个程序不工作,查不出来原因
void TIM1_Init()
{
            RCC->APB2ENR|=1<<11;               //TIM1时钟使能
            TIM1->ARR=24000;                         //定时500us   
            TIM1->PSC=0;                                //1分频(0+1)  
            TIM1->EGR = 0x01;                   //允许产生更新事件
            TIM1->DIER|=1<<0;                  //允许更新中断  
            TIM1->DIER|=1<<6;                  //允许触发中断
            TIM1->CR1|=0x01;                    //使能定时器1
            NVIC->ISER[0]|=1<<13;
}       


/***********************************
* 名称:     TIM1_IRQHandler()
* 功能:     TIM1溢出中断服务子程序
* 入口参数: 无
* 出口参数: 无
* 说明:               产生1K方波                               
************************************/
void TIM1_IRQHandler(void)
{
           if(TIM1->SR&0X0001)      //溢出中断
           {
                        if((GPIOA->ODR&(1<<6))!=(1<<6))  PWM1_high;       
                       else  PWM1_low;                         
          }
          TIM1 ->SR&=~(1<<0);     //清除中断标志位
}

收藏 评论7 发布时间:2014-11-25 09:12

举报

7个回答
那片清茶 回答时间:2014-11-25 09:26:44
有没有仿真器,看看定时中断会不会进
huangjiayin 回答时间:2014-11-25 09:29:34
用仿真器查过,进不了void TIM1_IRQHandler(void)函数
netlhx 回答时间:2014-11-25 09:32:13
定时器1中断要打开MOE输出,在刹车和死区寄存器里
huangjiayin 回答时间:2014-11-25 09:33:23
连第1条指令都不执行,这么怪的。PCLK=HCLK=48Mhz
huangjiayin 回答时间:2014-11-25 09:35:22
int main(void)
{
            Stm32_Clock_Init();          //系统时钟设置(最大48MHZ)
            SysTick_init();                  //滴答定时器初始化
            TIM1_Init();                     //TIM1定时器初始化
            TIM3_Init();                      //TIM3定时器初始化
            TIM14_Init();                    //TIM14定时器初始化
            TIM16_Init();                    //TIM16定时器初始化
            GPIO_init();                      //IO口初始化
            buz_set(1,20);                  //上电响1声
            while(1)
连第1个函数Stm32_Clock_Init()都不执行啊
huangjiayin 回答时间:2014-11-25 09:46:34
多谢netlhx,加了MOE(见下),还是不行,但执行TIM1_Init();函数就死在那里不动,不往下走啊
void TIM1_Init()
{
            RCC->APB2ENR|=1<<11;                     //TIM1时钟使能(一定在这里设置)  
            TIM1->ARR=24000;                         //定时500us   
            TIM1->PSC=0;                             //1分频(0+1)  
            TIM1->EGR = 0x01;                  //允许产生更新事件
            TIM1->DIER|=1<<0;                  //允许更新中断  
            TIM1->DIER|=1<<6;                  //允许触发中断
            TIM1->CR1|=0x01;                   //使能定时器1
            NVIC->ISER[0]|=1<<13;              //允许TIM1中断允许
            TIM1->BDTR |=1<<15;                //打开MOE
}       
huangjiayin 回答时间:2014-11-25 09:55:05
现可以执行Stm32_Clock_Init() 和SysTick_init();  但执行TIM1_Init()函数就死在那里不动

所属标签

相似问题

官网相关资源

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