|
改變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
|
|