STM32F429在UCOSIII下移植录音机实验,程序在SAI_Disable函数死循环

2019-07-20 08:32发布

本帖最后由 san兄弟 于 2018-4-3 22:00 编辑

买的STM32F429核心板,自己做的母板,在UCOSIII下移植录音机实验,在移植了相关C文件和H文件后,在初始化部分执行[mw_shl_code=c,true]WM8978_Init();                                    //初始化WM8978
        WM8978_HPvol_Set(40,40);            //耳机音量设置
        WM8978_SPKvol_Set(50);                    //喇叭音量设置[/mw_shl_code]

在系统启动后,在一个线程内调用recoder_enter_rec_mode()函数进入录音状态,结果指示灯不闪烁,线程卡死,其他线程正常。
[mw_shl_code=c,true]//led0任务函数
void led0_task(void *p_arg)
{
        OS_ERR err;
        p_arg = p_arg;
        LED0 = 0;
        LED1 = 0;
        recoder_enter_rec_mode();        //进入录音模式,此时耳机可以听到咪头采集到的音频
        while(1)
        {
                LED0=~LED0;
//                LED1=~LED1;
                OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //延时500ms
        }
}[/mw_shl_code]

如果将recoder_enter_rec_mode()函数放在start_task中创建任务之前则所有任务不执行。通过单步仿真发现问题出在SAIA_Init函数中的HAL_SAI_DeInit子函数,一路追踪到SAI_Disable(hsai)函数中的如下代码段:
[mw_shl_code=c,true]while((hsai->Instance->CR1 & SAI_xCR1_SAIEN) != RESET)
  {
    /* Check for the Timeout */
    if((HAL_GetTick() - tickstart ) > SAI_TIMEOUT_VALUE)
    {         
      /* Update error code */
      hsai->ErrorCode |= HAL_SAI_ERROR_TIMEOUT;
      
      status = HAL_TIMEOUT;
      
      /* Change the SAI state */
      HAL_SAI_ErrorCallback(hsai);
    }
  }[/mw_shl_code]

程序在这个while中死循环。HAL_GetTick() 的返回值一直没变,也就是systick中断函数SysTick_Handler不响应,uwTick++;没有执行,通过查看寄存器SysTick->CTRL一直为0x00010007,实在不晓得问题出在哪了,各位大神,求帮助!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
正点原子
1楼-- · 2019-07-21 02:38
san兄弟 发表于 2018-4-4 09:26
录音机程序和UCOSIII的lwip程序在开发板上都正常,移植之后到我自己母板上我udp没问题,自己的液晶按键也 ...

你是说在我们板子上,同样的代码,就正常
到你的板子就不正常了吗?
san兄弟
2楼-- · 2019-07-21 06:45
正点原子 发表于 2018-4-5 01:49
你是说在我们板子上,同样的代码,就正常
到你的板子就不正常了吗?

不是,我的意思是不管在你们的板子上还是我自己的板子上,单独运行录音机程序没问题,单独运行UCOSIII的UDP程序也没问题,和在一起有问题。昨晚在你们的429开发板上重新用NETCONN_UDP实验(UCOSIII版本)移植了一遍录音机程序,还是有同样的问题。
正点原子
3楼-- · 2019-07-21 10:57
 精彩回答 2  元偷偷看……
san兄弟
4楼-- · 2019-07-21 14:47
 精彩回答 2  元偷偷看……

一周热门 更多>