嗨,对话,
我在下面的GPIO上为arch\u printf设置了UART2
#ifdef CFG\u PRINTF\u UART2格式
#定义GPIO\U UART2\U TX\U端口GPIO\U端口\U 0
#定义GPIO\U UART2\U TX\U引脚GPIO\U引脚6
#定义GPIO\U UART2\U RX\U端口GPIO\U端口\U 0
#定义GPIO\U UART2\U RX\U引脚GPIO\U引脚7
#结束
我定义了
#定义CFG\u PRINTF
但是,在移动函数“schedule_while_ble_on(void)”中的“arch_printf_process();”之前,我没有得到任何打印,现在看起来是这样的
启用时静态内联void调度(void)
{
//可编程时钟已启用
while(ble\u通电()){
//已设置BLE事件结束。可以运行条件射频校准。
uint8\ u t ble\ u evt\ u end\ u set=ke\ u event\ u get(ke\ u event\ u ble\ u evt\ u end);
//执行消息和事件
rwip_schedule();
//
如果(ble\ evt\ U end\ U set)
{
uint32\u t sleep\u duration=0;
rcx20读取频率();
//如果你有足够的时间对收音机进行温度校准
if(lld\u sleep\u check(&sleep\u duration,4))//6个插槽->3.750毫秒
//检查运行无线电校准的时间和温度。
有条件地运行无线电卡();
}
//我的移动过程()
arch_printf_process();
//将控制权授予应用程序,尝试进入睡眠状态
//如果应用程序返回,请转到睡眠
如果(!应用程序\u异步\u trm())
中断;
//SDK改进需要测试!!我们可以添加以下条件并移动
//这是不可能的
//我们可以考虑把它放在应用程序异步运行之前
//if(GetBits16(CLK\u CTRL\u REG,RUNNING\u AT \u XTAL16M))
//执行printf进程
//上移arch_printf_process();
}
}
有了这个修改,archèu printf就可以工作了。
信息:我的用户应用程序主循环_系统上的callbacks.app\u为空,因此在返回时调度\u,而在到达arch\u printf\u process()的原始位置之前启用\u;
这是SDK中的一个bug(在函数“schedule_while_ble_on(void)”中错误地放置了“arch_printf_process();”),还是我做错了什么?
如果我做错了,那我该怎么做?
先谢谢你。
致以最诚挚的问候,
西亚诺霜
丹麦。
你好,齐亚诺,
是的,这是SDK上的一个错误,正如您注意到的,是arch\u printf\u process()的错误位置,请检查此帖子:
http://support.dialog-semiconductor.com/sdk-5-uart
谢谢你的对话