龙芯俱乐部开源技术社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2625|回复: 1

1c庫pwm如何改變duty cycle

[复制链接]

46

主题

115

帖子

4146

积分

论坛元老

Rank: 8Rank: 8

积分
4146
发表于 2018-6-1 07:11:58 | 显示全部楼层 |阅读模式
改變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


46

主题

115

帖子

4146

积分

论坛元老

Rank: 8Rank: 8

积分
4146
 楼主| 发表于 2018-6-3 04:46:57 | 显示全部楼层
本帖最后由 cyberhero 于 2018-6-3 05:01 编辑

如果duty cycle改成0.99執行一次可以, 等於1.0時一次也不能執行.
放在while裡0.99也不行.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|龙芯俱乐部开源技术社区

GMT+8, 2024-11-28 09:22 , Processed in 0.239741 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表