本帖最后由 铁头电子player 于 2025-7-28 23:01 编辑
我正在使用MC-kit IHM07M1套件,搭配NUCLEO-F302R8作为控制板。我在微控制器中实现如图所示的混沌PWM。图中可以看到,锯齿波脉冲是一个向上计数的定时器。 ARR(自动重装载寄存器)需要保持恒定,而每个通道的CCRx(捕获/比较寄存器)值会变化。我的问题是,无论我怎么做,都无法在代码中实现 。我最初在MotorControl Workbench中创建了一个项目(只是一个默认的Bull-Running-Program),然后从中生成代码。以下是我设置的代码工作流程: Bull Running Program中已经初始化了定时器1和所有PWM通道。我在这里唯一修改的是初始ARR和CRRx值。
中断处理函数计算新的CCRx值,并将其分配给通道1-3。
这是我的main()函数: int main(void){ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_DAC_Init(); MX_TIM1_Init(); MX_USART2_UART_Init(); MX_MotorControl_Init(); /* Initialize interrupts */ MX_NVIC_Init(); while (1) { } }问题在于调试时IRQ-Handler从未进入,因此CRRx寄存器也从未被赋予新值。 当我运行代码时,什么反应都没有——定时器1的所有通道始终保持在低电平,用逻辑分析仪检查过,电机也因此无法运行。 我已经卡在这里好几天了,求助高手!
|