问问题尽可能描述清楚, 附截图 log 信息. demo_console 发命令是注意不能勾选换行.
问问题尽可能描述清楚, 附截图 log 信息. demo_console 发命令是注意不能勾选换行.
/*****************************************************************************
*
* File Name : main. c
*
* Description: main
*
* Copyright (c) 2014 Winner Micro Electronic Design Co. , Ltd.
* All rights reserved.
*
* Author : dave
*
* Date : 2014-6-14
*****************************************************************************/
#include "wm_include. h"
#define USER_TASK_QUEUE_SIZE 1
#define USER_TASK_QUEUE_TEST 0x01
static tls_os_queue_t *user_task_queue = NULL;
static OS_STK TaskStk1[512];
static OS_STK TaskStk2[512];
static void user_task1 (void)
{
while (1)
{
printf ("--- send msg\r\n") ;
// 发送队里消息
tls_os_queue_send (user_task_queue, (void *) USER_TASK_QUEUE_TEST, 0) ;
tls_os_time_delay (HZ) ;
}
}
static void user_task2 (void)
{
void *msg;
tls_os_status_t ret;
for ( ; ; )
{
// 接收队里消息
ret= tls_os_queue_receive (user_task_queue, (void **) &msg, 0, 0) ;
if (ret == TLS_OS_SUCCESS)
{
switch ( (u32) msg)
{
case USER_TASK_QUEUE_TEST: // 收到指定的消息
printf ("--- received msg\r\n") ;
break;
default:
break;
}
}
}
}
void UserMain (void)
{
printf ("\n user task \n") ;
// 创建 task1 用于发送队列消息
tls_os_task_create (NULL, "task1",
( void (*) ) user_task1,
NULL,
(void *) TaskStk1, /* task's stack start address */
sizeof (TaskStk1) , /* task's stack size, unit: byte */
31,
0) ;
// 创建 task2 用于接收队里消息
tls_os_task_create (NULL, "task2",
( void (*) ) user_task2,
NULL,
(void *) TaskStk2, /* task's stack start address */
sizeof (TaskStk2) , /* task's stack size, unit: byte */
32,
0) ;
// 创建消息队列
tls_os_queue_create (&user_task_queue, USER_TASK_QUEUE_SIZE) ;
#if DEMO_CONSOLE
CreateDemoTask () ;
#endif
//用户自己的 task
}
设置中断优先级就可以了, 默认硬件中断都是最高优先级, 也可自行调整.
任务不要挂起, 在任务里面等待信号量即可.
批量出货 esd 管子是随芯片赠送的哦
电源的话, 分开设计会好些, 地的话只有底部焊盘一个地.
可以支持, SDK 里面有两套蓝牙协议栈, 默认用的是 NimBLE 蓝牙协议栈, 只支持 BLE, 而另外一个蓝牙协议栈支持 BT 和 BLE, 相对编译后的固件也会大一些, 可以通过宏定义选择. 两个蓝牙协议栈分别参考以下两个文档:
tls_gpio_write 比 tls_bitband_write 考虑的东西相对多一些, 所以判断语句也会多一些, 参数也更少更加方便用户调用, 相对效率比后者低一些, 如果不考虑效率用 tls_gpio_write 即可.
W80X 系列芯片, 通过串口下载的 fls 固件包含 secboot. img (启动引导程序) 和 user. img (用户程序) 两部分组成.
而 CK-LINK 下载时, 只会更新 user. img, 所以下载时不能勾选擦除选项, 否则会把 secboot 引导程序擦除掉, 导致即使烧录成功也启动不了, 打印 ccc.
如果芯片是空片, 或有擦除过 flash (串口一直打印 ccc) , 则应当先通过串口下载一次. fls 格式的固件后, 再将 CDK 参考下图选项配置, 再通过 CK-LINK 下载, 即可解决烧录启动不了问题.
log 截图看下, 大概率内存没有释放导致的.
可以通过以下接口动态更改 CPU 频率
extern void tls_sys_clk_set () ;
tls_sys_clk_set (CPU_CLK_240M) ;
经典蓝牙音频使用效果不好, 声音会断断续续, 所以都不建议客户使用.
截图截全些, 没有截到关键错误信息.
问 W800-SDK 编译发送命令报错