霹雳大乌龙的学习笔记

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 站点地图

C语言 - 函数返回一个数组

发表于 2019-10-10 | 更新于 2019-10-11 | 分类于 C语言 | 评论数: | 阅读次数:

题目

如下函数是否存在问题?如果存在问题如何修改?同时简要阐述涉及的相关概念。

阅读全文 »

手把手教你实现基于RT-Thread的百度语音识别(三)

发表于 2019-10-06 | 更新于 2019-10-11 | 分类于 语音识别 | 评论数: | 阅读次数:

前言

本次我们还是先不实现录音功能,因为音频编解码这一块是比较有难度的,再加上RT-Thread的Audio设备也比较复杂,难以理解,我暂时没考虑好怎么讲解该部分(我自己也没理解透~),所以就放到后面再分享吧。那么这次我们就讲讲项目的第7点:

将中文字库烧写进外挂的spi flash,使用SUFD+FAL软件包读写flash,实现LCD的中文显示,用来显示语音识别结果。

原本我做项目时,是没有打算要在LCD上显示识别结果的,但是因为我使用的潘多拉开发板板载了一块1.3寸的240*240高分辨率TFTLCD显示屏,不把它用上岂不是浪费?再加上后面想到如果不用语音识别来控制外设,识别一些其他语音的时候,有个可以显示识别结果的屏幕,岂不美哉。于是乎我便开始整LCD显示了,不整不知道,一整头皮发麻,RT-Thread官方对于潘多拉开发板在驱动各方面的支持都已经做的非常好了,包括LCD驱动,但是却没有中文字库的支持,也没有相关的资料,所以我就只能自己想办法实现了。

下面我分享的内容,跟百度语音识别没有太大的关系,主要是如何在LCD上显示中文的内容,但百度语音确确实实给我在实现的路上埋下了许多坑,所以我觉得这部分还是很有必要分享的,究竟是怎么一回事,听我细细道来。

阅读全文 »

手把手教你实现基于RT-Thread的百度语音识别(二)

发表于 2019-10-05 | 更新于 2019-10-11 | 分类于 语音识别 | 评论数: | 阅读次数:

准备工作

在本次实践开始之前,你必须确保你已经做了以下两件事:

  1. 注册百度开发者账号,并创建了一个语音识别应用,而且成功获取了Access Token(工程里将会用到);
  2. 建立一个基于你自己的STM32平台的RT-Thread工程,它必须具备Finsh控制台,文件系统,网络功能(不明白的参见RT-Thread文档中心,网络功能推荐使用AT组件+ESP8266,因为这是最简单快捷的方法)。

如果上面说的准备事项没有问题,那么请继续往下看:

这次我们将先跳过录音功能,而使用事先准备好的音频文件进行语音识别并控制板载RGB灯(上一篇的5,6点),所以你还需要准备一些音频文件,比如“红灯开”,“蓝灯关”。。。我是用手机录的音频,然后使用ffmpeg工具将音频转为百度语音官方认为最适合的16k采样率pcm文件,最后将这些音频文件放进sd卡中,我们的文件系统也是挂载在sd卡上的。

阅读全文 »

手把手教你实现基于RT-Thread的百度语音识别(一)

发表于 2019-10-03 | 更新于 2019-10-11 | 分类于 语音识别 | 评论数: | 阅读次数:

手把手教你实现基于RT-Thread的百度语音识别(一)

RT-Thread简介

RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过2亿台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。

RT-Thread拥有良好的软件生态,支持市面上所有主流的编译工具如GCC、Keil、IAR等,工具链完善、友好,支持各类标准接口,如POSIX、CMSIS、C++应用环境、Javascript执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构,如ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V,几乎支持市场上所有主流的MCU和Wi-Fi芯片。

得益于RT-thread丰富的组件以及一系列好用的软件包,作为应用开发者,我们不必过度关心底层的实现,而可以将更多的精力放在应用实现上,我将分享的百度语音识别便是如此。

阅读全文 »

RT-Thread学习笔记 —— 信号量

发表于 2019-05-02 | 分类于 RT-Thread | 评论数: | 阅读次数:

信号量控制块

1
2
3
4
5
6
struct rt_semaphore
{
struct rt_ipc_object parent;
rt_unit16_t value;
};
typedef struct rt_semaphore* rt_sem_t;
阅读全文 »

RT-Thread学习笔记 —— UART串口

发表于 2019-04-28 | 分类于 RT-Thread | 评论数: | 阅读次数:

访问串口设备

应用程序通过 RT-Thread提供的 I/O 设备管理接口来访问串口硬件,相关接口如下所示:

阅读全文 »

RT-Thread学习笔记 —— 线程管理

发表于 2019-04-28 | 分类于 RT-Thread | 评论数: | 阅读次数:

创建和删除线程(动态线程)

创建线程

1
2
3
4
5
6
7
8
rt_thread_t rt_thread_create(const char* name,                  //线程名称
void (*entry) (void* parameter), //线程入口函数
void* parameter, //线程入口函数参数
rt_uint32_t stack_size, //线程栈大小,单位是字节
rt_uint8_t priority, //线程优先级
rt_uint32_t tick); //线程时间片大小

-> 线程创建成功返回线程句柄,失败返回RT_NULL

删除线程

1
2
3
4
5
rt_err_t rt_thread_delete(
rt_thread_t thread //要删除的线程句柄
);

-> 成功返回RT_EOK,失败返回-RT_ERROR
阅读全文 »

数据结构(C语言) —— 队列

发表于 2019-04-12 | 更新于 2019-04-14 | 分类于 数据结构 | 评论数: | 阅读次数:

队列的基本概念

队列也是一种特殊的线性表,队列的数据元素及数据元素间的逻辑关系和线性表完全相同;其差别在于,线性表允许在任意位置插入和删除数据元素,而队列只允许在其一端进行插入操作,在另一端进行删除操作;进行插入操作的一端称为队尾,允许删除操作的一端称为队头。队列是一种先进先出的线性表。

阅读全文 »

数据结构(C语言) —— 堆栈

发表于 2019-04-10 | 分类于 数据结构 | 评论数: | 阅读次数:

堆栈的基本概念

堆栈是一种特殊的线性表,其数据元素以及数据元素间的逻辑关系和线性表的完全相同,其差别是:线性表允许在任意位置插入和删除数据元素,而堆栈只允许在固定一端进行插入和删除数据元素操作。
堆栈中允许进行插入和删除操作的一端成为栈顶,另一端成为栈底;最后进入堆栈的数据元素总是最先退出堆栈,因此堆栈也称作后进先出的线性表。

阅读全文 »

数据结构(C语言) —— 线性表(链表)

发表于 2019-03-30 | 更新于 2019-04-10 | 分类于 数据结构 | 评论数: | 阅读次数:

前言

上一篇博客我们详细的讲述了顺序表的实现,但以讲述的形式来记录数据结构这部分的笔记效率实在是有些低,所以接下来的部分我就单纯地列出知识点就完事了。嘻嘻嘻!~

阅读全文 »
12…4
霹雳大乌龙

霹雳大乌龙

做自己喜欢做的事情,努力成为大牛!

31 日志
20 分类
28 标签
RSS
GitHub E-Mail
© 2018 – 2019 霹雳大乌龙
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Muse v6.7.0
|