[AT32F421] TMR1用DMA搬运数据给CH1 CH2,失效

[复制链接]
 楼主| gregrgr 发表于 2025-4-2 19:44 | 显示全部楼层 |阅读模式
本帖最后由 gregrgr 于 2025-4-3 08:57 编辑

问题
TMR1用DMA搬运数据给CH1 CH2,通道1数据正常,通道2无任何反应。
  1. void wk_tmr1_init(void)
  2. {
  3.   /* add user code begin tmr1_init 0 */

  4.   /* add user code end tmr1_init 0 */

  5.   gpio_init_type gpio_init_struct;
  6.   tmr_output_config_type tmr_output_struct;
  7.   tmr_brkdt_config_type tmr_brkdt_struct;

  8.   gpio_default_para_init(&gpio_init_struct);

  9.   /* add user code begin tmr1_init 1 */

  10.   /* add user code end tmr1_init 1 */

  11.   /* configure the tmr1 CH2 pin */
  12.   gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE9, GPIO_MUX_2);
  13.   gpio_init_struct.gpio_pins = GPIO_PINS_9;
  14.   gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
  15.   gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
  16.   gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  17.   gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE;
  18.   gpio_init(GPIOA, &gpio_init_struct);

  19.   /* configure counter settings */
  20.   tmr_cnt_dir_set(TMR1, TMR_COUNT_UP);
  21.   tmr_clock_source_div_set(TMR1, TMR_CLOCK_DIV1);
  22.   tmr_repetition_counter_set(TMR1, 0);
  23.   tmr_period_buffer_enable(TMR1, TRUE);
  24.   tmr_base_init(TMR1, 143, 0);

  25.   /* configure primary mode settings */
  26.   tmr_sub_sync_mode_set(TMR1, FALSE);
  27.   tmr_primary_mode_select(TMR1, TMR_PRIMARY_SEL_RESET);

  28.   /* configure overflow event */
  29.   tmr_overflow_request_source_set(TMR1, TRUE);

  30.   /* configure channel 2 output settings */
  31.   tmr_output_struct.oc_mode = TMR_OUTPUT_CONTROL_PWM_MODE_B;
  32.   tmr_output_struct.oc_output_state = TRUE;
  33.   tmr_output_struct.occ_output_state = FALSE;
  34.   tmr_output_struct.oc_polarity = TMR_OUTPUT_ACTIVE_LOW;
  35.   tmr_output_struct.occ_polarity = TMR_OUTPUT_ACTIVE_HIGH;
  36.   tmr_output_struct.oc_idle_state = TRUE;
  37.   tmr_output_struct.occ_idle_state = FALSE;
  38.   tmr_output_channel_config(TMR1, TMR_SELECT_CHANNEL_2, &tmr_output_struct);
  39.   tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_2, 30);
  40.   tmr_output_channel_buffer_enable(TMR1, TMR_SELECT_CHANNEL_2, TRUE);

  41.   tmr_output_channel_immediately_set(TMR1, TMR_SELECT_CHANNEL_2, FALSE);

  42.   /* configure break and dead-time settings */
  43.   tmr_brkdt_struct.brk_enable = FALSE;
  44.   tmr_brkdt_struct.auto_output_enable = FALSE;
  45.   tmr_brkdt_struct.brk_polarity = TMR_BRK_INPUT_ACTIVE_LOW;
  46.   tmr_brkdt_struct.fcsoen_state = FALSE;
  47.   tmr_brkdt_struct.fcsodis_state = FALSE;
  48.   tmr_brkdt_struct.wp_level = TMR_WP_OFF;
  49.   tmr_brkdt_struct.deadtime = 0;
  50.   tmr_brkdt_config(TMR1, &tmr_brkdt_struct);


  51.   tmr_output_enable(TMR1, TRUE);

  52.   tmr_counter_enable(TMR1, TRUE);

  53.   /* add user code begin tmr1_init 2 */

  54.   /* add user code end tmr1_init 2 */
  55. }


muyichuan2012 发表于 2025-4-3 09:06 | 显示全部楼层
你这代码不完整啊   DMA怎么配置的
 楼主| gregrgr 发表于 2025-4-3 11:46 | 显示全部楼层
已解决 板子上的触发器莫名其妙坏了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

39

帖子

0

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

7

主题

39

帖子

0

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