c++ - 为什么STM32不中断?

标签 c++ c timer stm32

我正在为微 Controller STM32F407 磁盘驱动器编写一个简单的程序。我已经学会了如何使用计时器来延迟程序的执行,但是如果我需要启动计时器而不考虑主程序怎么办? 我尝试按照技术文档进行所有操作,但定时器溢出中断不起作用。 不管怎样,谢谢你的回答!

    #include "stm32f4xx.h"
#include "stdbool.h"

void clock_perif ();
void init_HSE ();
void init_GPIOD ();
void init_TIM6(int time);


#define ledTime 1

int main(void){
    init_HSE ();




    __enable_irq ();
    //NVIC_EnableIRQ(TIM6_DAC_IRQn);
    NVIC->ISER[1] = 0x400000;

    clock_perif ();

    init_GPIOD ();
    init_TIM6 (ledTime);



    while (1){
    }

}


/*
init RCC
*/

void clock_perif (){
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
    RCC->APB1ENR |= RCC_APB1ENR_TIM6EN;
    asm("NOP");
    asm("NOP");
    asm("NOP");
    asm("NOP");
    asm("NOP");
    asm("NOP");
}


/*
Activate external qarzt
*/

void init_HSE (){
     RCC->CR = RCC_CR_HSEON;
   while (!(RCC->CR & RCC_CR_HSERDY));
   RCC->CFGR |= RCC_CFGR_SW_0;
   while (!(RCC->CFGR & RCC_CFGR_SWS_0));
   RCC->CFGR &= ~ RCC_CFGR_HPRE_3 | RCC_CFGR_PPRE1_2 | RCC_CFGR_PPRE2_2;
}


/*
Activate GPIOs
*/

void init_GPIOD (){
    GPIOD->MODER |= GPIO_MODER_MODE15_0 | GPIO_MODER_MODE14_0 | GPIO_MODER_MODE13_0 | GPIO_MODER_MODE12_0;
    GPIOD->PUPDR |= GPIO_PUPDR_PUPD15_1 | GPIO_PUPDR_PUPD14_1 | GPIO_PUPDR_PUPD13_1 | GPIO_PUPDR_PUPD13_1;
}


/*
Timer 6
*/
void init_TIM6(int time){   
    TIM6->CR1 |= TIM_CR1_URS | TIM_CR1_UDIS;
    TIM6->DIER |= TIM_DIER_UIE;
    TIM6->CNT = 0;
    TIM6->PSC = 7900;
    TIM6->ARR = 1;
    TIM6->EGR = 1;
    TIM6->SR = 0;
    TIM6->CR1 |= TIM_CR1_CEN;
}


//Interrupts!
void TIM6_DAC_IRQHandler (){
    GPIOD->BSRR |= GPIO_BSRR_BS15 | GPIO_BSRR_BS14 | GPIO_BSRR_BS13 | GPIO_BSRR_BS12;
}

我是微 Controller 编程新手,但仍然遇到问题

最佳答案

您可以通过设置位TIM_CR1_UDIS来禁用更新事件生成。因此不会产生中断。

关于c++ - 为什么STM32不中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59560359/

相关文章:

c++ - 交换内存块

C++ Jeopardy 游戏算法设计

接受连接后打开两个线程时,C 无限循环中断并出现代码 141

c - 确定质数或合数

linux - 如何使用 'hrtimer'的函数?

c++ - 没有 -On 就无法构建平凡的 Eigen3 张量程序

c++ - 使用 OpenCV 确定草绘箭头的方向

c - 为什么我的作业有逻辑错误?

datetime - flutter :保持时间

android - Android activityView 中倒计时/计时器的后台任务