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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版