- 2023-03-31
-
加入了学习《 TINA-TI培训课程》,观看 TINA-TITM波形浏览器(一)
-
加入了学习《 TINA-TI培训课程》,观看 导入SPICE模型到TINA-TITM模拟器
-
加入了学习《 TINA-TI培训课程》,观看 TINA-TITM模拟器的提示和技巧
-
加入了学习《 TINA-TI培训课程》,观看 使用TINA-TITM模拟器仿真电源产品
-
加入了学习《 TINA-TI培训课程》,观看 在TINA-TITM模拟器中使用噪音,傅立叶分析等信号链专用分析
-
加入了学习《 TINA-TI培训课程》,观看 使用WEBENCH仿真输出创建TINA-TITM模拟器文件
-
加入了学习《 TINA-TI培训课程》,观看 如何使用受控源向导TINA-TITM模拟器
-
加入了学习《 TINA-TI培训课程》,观看 TINA-TITM模拟器的高级功能,配置资源,PWL和WAV文件的支持
-
加入了学习《 TINA-TI培训课程》,观看 TINA-TITM模拟器的高级功能,横扫参数
-
加入了学习《 TINA-TI培训课程》,观看 使用TINA-TITM模拟器进行电子规则检查,直流,交流和瞬态分析
-
加入了学习《 TINA-TI培训课程》,观看 TINA-TI模拟器介绍
- 2023-03-30
-
加入了学习《 TINA-TI培训课程》,观看 TINA-TITM波形浏览器(二)
- 2023-01-29
-
回复了主题帖:
【开工大吉,抢楼有礼】聊一聊你感兴趣的技术和板子
问题1:你比较关注,感兴趣的技术点是什么?
显示技术,比如LVGL
问题2:推荐你喜欢或者想测评的开发板或其他电子产品。
stm32
-
回复了主题帖:
【开工大吉,抢楼有礼】聊一聊你感兴趣的技术和板子
问题1:你比较关注,感兴趣的技术点是什么?
显示技术,比如LVGL
问题2:推荐你喜欢或者想测评的开发板或其他电子产品。
stm32
- 2022-11-10
-
加入了学习《旋智科技电机控制解决方案》,观看 电机控制解决方案综合介绍
-
加入了学习《旋智科技电机控制解决方案》,观看 工业变频+伺服应用方案 梁超辉
-
加入了学习《旋智科技电机控制解决方案》,观看 洗衣机应用方案 邓焕明
- 2022-06-30
-
发表了主题帖:
【2022得捷电子创新设计大赛】物料开箱—STM32F750, nano ble 33
十分感谢版主帮忙指导下单,原来设计选定的esp32-s3后来看到论坛小伙伴说没有屏幕,于是紧急更换成了带屏幕的STM32F750,考虑到蓝牙功能,又选择了一个nano ble 33.
外包装是得捷标志性的大箱子:
下面是本次设计的主力:
下面是蓝牙ble模块
背面照:
打开盒子:
开机上电:
再次感谢得捷和eeworld!
- 2022-05-29
-
评论了课程:
EEWORLD大学堂----2022 Digi-Key KOL 系列: Teensy - 1GHz 主频的单片机
这是个新出的栏目吗?感觉很不错,自己之前听过这个开发板,没有了解过。 这次听完之后,才知道板子是NXP的RT1060系列,非常强大,介于MCU-MPU直接的产品,可以跑AI, tensor-flow-lite做模型预测,非常给力!
- 2022-05-21
-
发表了主题帖:
【平头哥RVB2601创意应用开发】_3_Music Play搭建
首先是新建一个工程,利用好平头哥丰富的例程资源能够节约大量的时间!
为了能够联网获取更多的内容,可以先配置联网的一些参数,位于位机init.c中:
static void network_init()
{
w800_wifi_param_t w800_param;
/* init wifi driver and network */
w800_param.reset_pin = PA21;
w800_param.baud = 1*1000000;
w800_param.cs_pin = PA15;
w800_param.wakeup_pin = PA25;
w800_param.int_pin = PA22;
w800_param.channel_id = 0;
w800_param.buffer_size = 4*1024;
wifi_w800_register(NULL, &w800_param);
app_netmgr_hdl = netmgr_dev_wifi_init();
if (app_netmgr_hdl) {
utask_t *task = utask_new("netmgr", 2 * 1024, QUEUE_MSG_COUNT, AOS_DEFAULT_APP_PRI);
netmgr_service_init(task);
netmgr_config_wifi(app_netmgr_hdl, "TPxxx", 12, "xxxx000", 11);
netmgr_start(app_netmgr_hdl);
}
}
然后是修改player_demo.c中的读取相应的命令然后加以处理部分:
static void cmd_ipc_func(char *wbuf, int wbuf_len, int argc, char **argv)
{
//uint8 currentVol;
if (argc == 3 && strcmp(argv[1], "play") == 0) {
char url[128];
if (strcmp(argv[2], "welcom") == 0) {
snprintf(url, sizeof(url), "mem://addr=%u&size=%u", (uint32_t)&_welcome_mp3, _welcome_mp3_len);
player_play(get_player_demo(), url, 0);
} else {
player_play(get_player_demo(), argv[2], 0);
}
} else if (argc == 2 && strcmp(argv[1], "stop") == 0) {
player_stop(get_player_demo());
} else if (argc == 2 && strcmp(argv[1], "pause") == 0) {
player_pause(get_player_demo());
} else if (argc == 2 && strcmp(argv[1], "resume") == 0) {
player_resume(get_player_demo());
} else if (argc == 3 && strcmp(argv[1], "web") == 0) {
g_url = strdup(argv[2]);
LOGD(TAG, "g_url = %s", g_url);
aos_task_new("web_task", _webtask, NULL, 6*1024);
} else if(argc == 2 && strcmp(argv[1], "volumeUp") == 0){
if(245 >= (curVol = g_player->vol_index)){
curVol += 10;
player_set_vol(g_player, curVol);
}
printf("\tcurrentVol: %d\n", curVol);
} else if(argc == 2 && strcmp(argv[1], "volumeDown") == 0){
if(10 <= (curVol = g_player->vol_index)){
curVol -= 10;
player_set_vol(g_player, curVol);
}
printf("\tcurrentVol: %d\n", curVol);
}else {
printf("\tplayer play welcom/url[http://]\n");
printf("\tplayer pause\n");
printf("\tplayer resume\n");
printf("\tplayer stop\n");
printf("\tplayer volumeUp\n");
printf("\tplayer volumeDown\n");
printf("\tplayer help");
}
}
注意:上述增加了两个If条件判断分支,分别判断是否需要调大音量或者调小音量,如有需要,会调用例程提供的player_set_vol()api来做相应的音量调节。
在做这个小例子的时候,遇到了如下错误:
后来发现是我在当前c文件引用的一个数据类型,它实际的定义却在另一个c文件中,于是一顿操作把这个结构体的定义挪到了相应的头文件player.h中,然后在两个c文件中都包含这个头文件,即可。
按F7编译程序后下载:
usb线缆连接至串口,可以看到如下信息,显示已经成功获取IP地址:
然后可以看到相应的播放内容:
附: