// // Created by RUPC on 2024/1/8. // #include "bsp/dp32g030/timer.h" #include "ARMCM0.h" uint8_t TIM0_CNT=0; void TIM0_ISR() { TIM0_CNT++; TIMERBASE0_IF |= (1 << 0); // 写1清零 清除定时器中断状态 } void TIM0_SET_PSC(uint16_t prescaler) { // 确保传入的分频系数在合法范围内(0 到 0xFFFF) if (prescaler <= 0xFFFF) { // 清除 DIV 位域 TIMERBASE0_DIV &= ~(0xFFFF); // 通过与操作清除 DIV 位域的内容 // 设置 DIV 位域为传入的分频系数 TIMERBASE0_DIV |= prescaler; } } void TIM0_SET_ARR(uint16_t Arr) { // 确保传入的分频系数在合法范围内(0 到 0xFFFF) if (Arr <= 0xFFFF) { // 清除 DIV 位域 TIMERBASE0_LOW_LOAD &= ~(0xFFFF); // 通过与操作清除 DIV 位域的内容 // 设置 DIV 位域为传入的分频系数 TIMERBASE0_LOW_LOAD |= Arr; } } void TIM0_INIT() { // Define TIMERBASE0 base address #define TIMERBASE0_BASE 0x40064000 #define TIMERBASE_EN_OFFSET 0x00 #define TIMERBASE_IE_OFFSET 0x10 #define TIMERBASE_IF_OFFSET 0x14 // Enable TIMERBASE0 *((volatile unsigned int *)(TIMERBASE0_BASE + TIMERBASE_EN_OFFSET)) |= 0x1; // Enable LOW_EN // Enable Timer0 interrupt *((volatile unsigned int *)(TIMERBASE0_BASE + TIMERBASE_IE_OFFSET)) |= 0x1; // Enable LOW_IE // Enable global interrupts (assuming your MCU supports this) __enable_irq(); // Function to enable interrupts // // TIM0_SET_PSC(480-1);//48000000/480/100=1000 // TIM0_SET_ARR(1000);//10ms // TIMERBASE0_IF |= (1 << 1) | (1 << 0); // 写1清零 清除定时器中断状态 // TIMERBASE0_IE |= (1 << 1) | (1 << 0); // 1高 0低 使能定时器中断 // TIMERBASE0_EN |=(1 << 1) | (1 << 0);//1高 0低 使能定时器 // // __enable_irq(); }