红枫
红枫 - 认证专家
This guy hasn't written anything yet

注册于 1 year ago

回答
256
文章
4
关注者
30

这里at设备是生产者,动态缓存在消费者那里释放,因为生产者不知道消费者什么时候用完。

看看CAN的初始化是不是在ota_app_vtor_reconfig之前了,如果是将CAN初始化延后就行了。RW_IRAM1 没必要也偏移0x20000

可以使用quick led组件,使用组件的执行特殊序列函数实现驱动继电器功能。

请参考下面代码:

static void qbt_jump_to_app(void)
{
    typedef void (*app_func_t)(void);
    u32 app_addr = QBOOT_APP_ADDR;
    u32 stk_addr = *((__IO uint32_t *)app_addr);
    app_func_t app_func = (app_func_t)(*((__IO uint32_t *)(app_addr + 4)));

    if ((((u32)app_func & 0xff000000) != 0x08000000) || ((stk_addr & 0x2ff00000) != 0x20000000))
    {
        LOG_E("No legitimate application.");
        return;
    }

    rt_kprintf("Jump to application running ... \n");
    rt_thread_mdelay(200);
    
    __disable_irq();
    HAL_DeInit();

    for(int i=0; i<128; i++)
    {
        HAL_NVIC_DisableIRQ(i);
        HAL_NVIC_ClearPendingIRQ(i);
    }
    
    __set_CONTROL(0);
    __set_MSP(stk_addr);
    
    app_func();//Jump to application running
    
    LOG_E("Qboot jump to application fail.");
}

像是串口接收有丢数据,串口fifo配置略大些,主频高些

at_exec_cmd是有返回值的,请先判断返回值再确定resp数据是否有效。

bc26的天线要接好,信号强度至少15以上,供电要充足。nb网络的延迟较大,适当加大接收超时时间。

一个定时器只能产生一个频率的pwm,可以产生多个通道pwm信号,不同信道可以占空比不同但频率相同

回到
顶部

发布
问题

投诉
建议