cyberhero 发表于 2018-6-1 07:11:58

1c庫pwm如何改變duty cycle

改變duty cycle後是否應該調用pwm_init().如下代碼會導致panic, unexpected general exception. 即使把pwm_init(&pwm_info)注釋掉, 只留pwm_info.duty=1.0;一句仍然panic. 奇怪的是在另一個程序, 在串口中斷test_uart_irqhandler()函數裏這樣使用卻沒問題.
pwm_info_t pwm_info;
pwm_info.gpio=LS1C_PWM0_GPIO06; // pin 78
pwm_info.mode=PWM_MODE_NORMAL;
while (1)
    {
      pwm_info.duty=1.0;
      pwm_info.period_ns=20*1000*1000;
      pwm_init(&pwm_info);
      delay_ms(500);
      pwm_info.duty=0.0;
      pwm_info.period_ns=20*1000*1000;
      delay_ms(500);
    }
白菜板1.1,應該不是內存問題.編譯其他程序都沒有問題,檢查過sdram_cfg.h, 如下, 應該沒錯
#if 1
// 白菜板8MB
/*
    以型号为IS42S16400的SDRAM为例,
    物理参数为,
    容量:8MB
    位宽:16位
    列宽:8位,即2的8次方,即256
    行宽:12位,即2的12次方,即4K

    所以,
    颗粒的位宽=WIDTH_16
    颗粒的列数=COL_256
    颗粒的行数=ROW_4K

    再结合宏SD_PARA0和芯片手册中寄存器SD_CONFIG,相信一看就能明白
    替换宏SD_PARA0中的行宽、列宽和位宽
*/
#define SDRAM_WIDTH         (WIDTH_16)
#define SDRAM_COL         (COL_256)
#define SDRAM_ROW         (ROW_4K)

#else

// 智龙32MByte
#define SDRAM_WIDTH         (WIDTH_16)
#define SDRAM_COL         (COL_512)
#define SDRAM_ROW         (ROW_8K)

#endif


cyberhero 发表于 2018-6-3 04:46:57

本帖最后由 cyberhero 于 2018-6-3 05:01 编辑

如果duty cycle改成0.99執行一次可以, 等於1.0時一次也不能執行.
放在while裡0.99也不行.
页: [1]
查看完整版本: 1c庫pwm如何改變duty cycle