打印
[STM32]

求助帖,STM32基本时钟中断触发

[复制链接]
1817|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大佬,我在编写TIM6基础时钟代码的时候,发现进不去中断,我仔细核对了代码没有发现问题,麻烦各位指导下,以下是具体代码
#include<stm32f10x.h>
#define TIM6_IRQn    54
static unsigned int time;
void delay(uint16_t n)
{
        int i,j;
        for(i=0;i<n;i++)
                for(j=0;j<8500;j++);
}
void tim_init()
{
        TIM_TimeBaseInitTypeDef tim;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);
        tim.TIM_Period = 1000-1;
        tim.TIM_Prescaler = 71;
        tim.TIM_ClockDivision = TIM_CKD_DIV1;
        tim.TIM_CounterMode = TIM_CounterMode_Up;
        tim.TIM_RepetitionCounter = 0;
       
        TIM_TimeBaseInit(TIM6,&tim);
        TIM_ClearFlag(TIM6,TIM_FLAG_Update);
        TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
        TIM_Cmd(TIM6,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,DISABLE);
}

void nvic_init()
{
        NVIC_InitTypeDef nvic;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
        nvic.NVIC_IRQChannel  =TIM6_IRQn;
        nvic.NVIC_IRQChannelPreemptionPriority = 0;
        nvic.NVIC_IRQChannelSubPriority = 3;
        nvic.NVIC_IRQChannelCmd= ENABLE;
        NVIC_Init(&nvic);
}
void led_init()
{
        GPIO_InitTypeDef led_gpio;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC| RCC_APB2Periph_AFIO,ENABLE);
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
        led_gpio.GPIO_Pin = GPIO_Pin_13;
        led_gpio.GPIO_Mode = GPIO_Mode_Out_PP;
        led_gpio.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&led_gpio);
}
int main()
{
        led_init();
        tim_init();
        nvic_init();
        GPIOC->BSRR = GPIO_Pin_13;
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);
        //delay(1000);
        while(1){}
}
void TIM6_IRQHandler()
{
        if(TIM_GetITStatus(TIM6,TIM_IT_Update) != RESET){
                time++;
                if(time >=1000)
                {
                        time = 0;
                        /*GPIOC->IDR = ~GPIOC->IDR & GPIO_Pin_13;
                        if(GPIOC->ODR & GPIO_Pin_13)
                        {
                                GPIOC->BRR = GPIO_Pin_13;
                        }else
                        {GPIOC->BSRR = GPIO_Pin_13;}
                        */
                        GPIOC->BRR = GPIO_Pin_13;
                }
                TIM_ClearITPendingBit(TIM6,TIM_FLAG_Update);
        }
}

相关帖子

沙发
8677343898|  楼主 | 2018-3-29 11:14 | 只看该作者
另外,宏定义#define TIM6_IRQn  是因为工程选项里的预先宏定义中是STM32F10X_MD,里面没有包含TIM6_IRQn的定义,我如果换成有TIM6定义的,编译的时候会出现更多的错误,所以直接在代码开头谢了#defineTIM6_IRQn 。编译完成后,烧到板子上发现功能实现不了,请各位指导

使用特权

评论回复
板凳
ayb_ice| | 2018-3-29 13:11 | 只看该作者
TIM6_IRQHandler要与启动文件的中断名对应

使用特权

评论回复
地板
ayb_ice| | 2018-3-29 13:21 | 只看该作者
我用的是STM32F4,中断号也是54,但名字是TIM6_DAC_IRQHandler

无标题.png (84.07 KB )

无标题.png

使用特权

评论回复
评论
8677343898 2018-3-29 22:01 回复TA
老铁,我找到错误了,已经成功了。TIM6没有全部改为TIM3 。 这低级错误,我也是醉了,再次感谢。 
5
delin17| | 2018-3-29 13:52 | 只看该作者
首先初始化完了后,把他时钟关掉了?他怎么跑啊?

使用特权

评论回复
6
ayb_ice| | 2018-3-29 13:58 | 只看该作者
delin17 发表于 2018-3-29 13:52
首先初始化完了后,把他时钟关掉了?他怎么跑啊?

后面又开了

使用特权

评论回复
7
8677343898|  楼主 | 2018-3-29 17:52 | 只看该作者
ayb_ice 发表于 2018-3-29 13:21
我用的是STM32F4,中断号也是54,但名字是TIM6_DAC_IRQHandler

老铁,果不出你所料,不过不同的是,我的启动文件里竟然没有TIM6的入口,我也是醉了,
之后,我把TIM6换成了TIM3,还是有问题,目前正努力排错中。谢啦,老铁
__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD     Reset_Handler              ; Reset Handler
                DCD     NMI_Handler                ; NMI Handler
                DCD     HardFault_Handler          ; Hard Fault Handler
                DCD     MemManage_Handler          ; MPU Fault Handler
                DCD     BusFault_Handler           ; Bus Fault Handler
                DCD     UsageFault_Handler         ; Usage Fault Handler
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     SVC_Handler                ; SVCall Handler
                DCD     DebugMon_Handler           ; Debug Monitor Handler
                DCD     0                          ; Reserved
                DCD     PendSV_Handler             ; PendSV Handler
                DCD     SysTick_Handler            ; SysTick Handler

                ; External Interrupts
                DCD     WWDG_IRQHandler            ; Window Watchdog
                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
                DCD     TAMPER_IRQHandler          ; Tamper
                DCD     RTC_IRQHandler             ; RTC
                DCD     FLASH_IRQHandler           ; Flash
                DCD     RCC_IRQHandler             ; RCC
                DCD     EXTI0_IRQHandler           ; EXTI Line 0
                DCD     EXTI1_IRQHandler           ; EXTI Line 1
                DCD     EXTI2_IRQHandler           ; EXTI Line 2
                DCD     EXTI3_IRQHandler           ; EXTI Line 3
                DCD     EXTI4_IRQHandler           ; EXTI Line 4
                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
                DCD     ADC1_2_IRQHandler          ; ADC1_2
                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
                DCD     TIM1_UP_IRQHandler         ; TIM1 Update
                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
                DCD     TIM2_IRQHandler            ; TIM2
                DCD     TIM3_IRQHandler            ; TIM3
                DCD     TIM4_IRQHandler            ; TIM4
                DCD     I2C1_EV_IRQHandler         ; I2C1 Event
                DCD     I2C1_ER_IRQHandler         ; I2C1 Error
                DCD     I2C2_EV_IRQHandler         ; I2C2 Event
                DCD     I2C2_ER_IRQHandler         ; I2C2 Error
                DCD     SPI1_IRQHandler            ; SPI1
                DCD     SPI2_IRQHandler            ; SPI2
                DCD     USART1_IRQHandler          ; USART1
                DCD     USART2_IRQHandler          ; USART2
                DCD     USART3_IRQHandler          ; USART3
                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
                DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend

使用特权

评论回复
8
simonliu009| | 2018-4-1 11:26 | 只看该作者
用cubeMX 这种低级错误就不容易犯了

使用特权

评论回复
9
caoenq| | 2018-4-9 08:46 | 只看该作者
只初始化定时器,没有开启的语句?

使用特权

评论回复
10
kingkits| | 2018-4-19 14:06 | 只看该作者
中断的名字要和中断向量表中一致

使用特权

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

本版积分规则

2

主题

43

帖子

1

粉丝