[STM32F3] 每次ARR达到时,更改TIM1中三个通道的CRR?

[复制链接]
 楼主| 铁头电子player 发表于 2025-7-19 12:14 | 显示全部楼层 |阅读模式
TI, ar, ni, mx, he
本帖最后由 铁头电子player 于 2025-7-28 23:01 编辑

我正在使用MC-kit IHM07M1套件,搭配NUCLEO-F302R8作为控制板。我在微控制器中实现如图所示的混沌PWM。图中可以看到,锯齿波脉冲是一个向上计数的定时器。
9835687a652467d9f.png
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的所有通道始终保持在低电平,用逻辑分析仪检查过,电机也因此无法运行。
我已经卡在这里好几天了,求助高手!

LOVEEVER 发表于 2025-7-29 23:25 | 显示全部楼层
ARR(自动重装载寄存器)需要保持恒定
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部