打印
[GW低功耗蓝牙MCU]

GW3323常见报错

[复制链接]
185|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Lana636|  楼主 | 2024-4-30 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Lana636 于 2024-4-30 11:06 编辑

GW3323开发时常见报错代码:
1、ERR: 2, EPC: 13e
2、ERROR ======> GIE-DIS in Flash: 1, EPC=19602 MISS=1005a452
原因:内存报错,变量非法访问,函数调用异常
解决方法:
中断中的打印函数要用printk函数,里面的全局变量要用volatile申明,中断函数要放到com_text区域;即添加AT(.com_text.isr)。以下为示例:
AT(.com_rodata.isr)
const char str_1[] = "Tim3 done\r\n ";
AT(.com_rodata.isr)
const char str_2[] = "Tim3 %d\r\n ";
volatile u32 duty_n;
AT(.com_text.isr)
void timer3_isq(void)
{
    if (tmr_get_flag(TMR3, TMR_FLAG_UPDATE2) != RESET)
    {
        tmr_clear_flag(TMR3, TMR_FLAG_UPDATE2);
         func_A();//例如:gpio_toggle_bits(GPIOB_REG, GPIO_PIN_2);
        printk(str_1);
         printk(str_2,TMR3CON);
    }
}
例如func_A()中调用了func_B(),那么func_B()也要放入AT(.com_text.isr)区。

3、ERROR ======> thread suspend: thread disorder, 2
原因:中断问题导致线程挂起
解决方法:
中断中的打印函数要用printk函数,里面的全局变量要用volatile申明,中断函数要放到com_text区域;即添加AT(.com_text.isr)
4、
“ERROR ======> timer_thread miss: 178a2, 4c624”
原因:在.map文件中找到“178a2”即可定位发生异常的函数。
解决方法:中断里面建议少跑点东西。
5、ERROR ======> CRC: 5085 c29f
原因:读取地址内容CRC检验结果不一样就报错。
解决方法:可能是你操作的时候吧flash原来的程序破坏了,不然就是load flash的配置被改了"config.h"中更改#define FLASH_SIZE  FSIZE_1M

使用特权

评论回复
沙发
Lana636|  楼主 | 2024-5-7 09:40 | 只看该作者
2、ERROR ======> GIE-DIS in Flash: 1, EPC=19602 MISS=1005a452
关中断程序及其在开中断前的操作都要放到flash中执行,否则会报此类错误。
备注:u32 isq_ALL;
void ARMDisableInt(void)
{
    isq_ALL = PICEN;
    PICEN = 0;
}

void ARMEnableInt(void)
{
    PICEN = isq_ALL;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝