cyang's blog

嵌入式入门/*到头发护理*/ http://cyang.tech

排序:
默认
按更新时间
按访问量

PCM 转 WAV

PCM 数据无法直接通过播放器打开,因为少了 44 字节的文件头,这里面最主要的信息是描述该 PCM 的采样频率,通道数,以及位数。 双击 pcmToWav.exe,拖入待转换的 PCM 数据,输入通道数和采样频率,默认使用 16-bit 表示一个采样点。等待程序运行结束,就会生成一个同名的 ....

2018-06-07 19:43:14

阅读数:9

评论数:0

文件转换为C数组 fileToC

fileToC 简单说明 fileToC 是一款使用 python 编写的程序,可以将任意文件的二进制数据转换为 .C 文件的数组,以便程序编译。 双击 fileToC.exe 程序,将要转换的 test.any 文件拖入命令行,等待程序自动转换,结束后便可以得到一个和该文件同名的 .c 文...

2018-05-18 13:25:27

阅读数:25

评论数:0

CSDN博客数据导出

CSDN2HEXO 源码地址 CSDN2HEXO CSDN2HEXO 是一款基于CSDN开放平台 的 csdn blog 内容下载器, 可以下载博客中的文章内容和图片,文章保存为 markdown 格式,图片可下载无水印图片,并根据文章标题生成文件夹存储相关数据。 用法 1、首先需要获得...

2018-04-28 14:46:23

阅读数:38

评论数:0

C语言中,隐藏结构体的细节

本文转载自 博客园 我们都知道,在C语言中,结构体中的字段都是可以访问的。或者说,在C++ 中,类和结构体的主要区别就是类中成员变量默认为private,而结构体中默认为public。结构体的这一个特性,导致结构体中封装的数据,实际上并没有封装,外界都可以访问结构体中的字段。 C++中我们尚可...

2018-04-18 17:49:48

阅读数:58

评论数:0

C语言 符号的不同意义

C语言的许多符号在不同的上下文环境里有不同的意义,相当于被“重载”了。如下展示了一些符号的不同意义。 static 在函数内部,表示该变量的值在各个调用间一直保持延续性。类似与全局变量,区别在于作用域不同。 在函数外部,表示该函数或者变量只对本文件可见。 extern 用于函数定义,表示...

2018-03-27 22:53:22

阅读数:109

评论数:2

IAR 和 keil 使用外部 SDRAM 的区别

当芯片内部的 SRAM 不够用时,就需要在外部扩展 SDRAM,然后在写程序时将一些比较大的 buffer 定义在外部内存中。在进行正确的配置之后,对外部 SDRAM 的使用,和芯片内部的 SRAM 是一样的,可以直接对 SDRAM 的地址进行读写访问。 因此,最简单的方法就是,如下所示的代码,...

2018-03-26 19:34:15

阅读数:102

评论数:0

C语言 ringBuffer 实现

一、 ringBuffer 介绍 ringBuffer 称作环形缓冲,也有叫 circleBuffer 的。就是取内存中一块连续的区域用作环形缓冲区的数据存储区。这块连续的存储会被反复使用,向 ringBuffer 写入数据总是从写指针的位置开始,如写到实际存储区的末尾还没有写完,则将剩余的数据...

2018-03-22 20:30:13

阅读数:61

评论数:0

C语言 malloc 内存泄漏

错误代码如下: int Init_layer2_Decoder(void) { Stream = (struct mad_stream*)malloc(sizeof(struct mad_stream)); Frame = (struct mad_frame*)malloc(...

2018-03-18 20:33:29

阅读数:33

评论数:0

STM32 硬件CRC和软件CRC速度比较

一、测试条件 硬件: STM32L432KC 主频: 80MHz 编译器: IAR 8.20.1 编译选项: High Speed no size constraints CRC 生成多项式: 0x782f 二、测试方法 软件提前生成CRC表,用于查询。分别使用软件CRC算法和硬...

2018-03-12 22:46:18

阅读数:205

评论数:0

下载 tumblr 标记为喜欢的内容

源代码发布在github : get_tumblr_likes 一、介绍 本项目使用 python 编写,分析 tumblr 账户中喜欢的内容,给出资源链接,并下载。 其中 test.json 是一份 tumblr 返回的喜欢数据的 json 示例,提取里面图片和视频的资源地址后下载,下载的...

2018-03-03 16:52:05

阅读数:235

评论数:0

STM32 无法通过 %f 打印浮点数

一、问题 使用 IAR 开发 STM32,发现无法通过 printf 重定向到串口打印出浮点数。代码如下: 输出结果如下: 可见,浮点数部分无法正常显示。 二、解决方法 这是由于 IAR 默认选择的 printf 库不支持浮点数的的输出。可在设置选项中修改。如下:默认使用 sma...

2018-03-02 14:54:06

阅读数:412

评论数:0

STM32L432 CoreMark跑分测试

测试环境: IAR for ARM 7.80.4 测试得分:277 官方给出的分数为:273.55 如下图:

2018-02-28 12:55:50

阅读数:78

评论数:0

STM32F469 CoreMark跑分测试

一、CoreMark 介绍 CoreMark 是一项测试处理器性能的基准测试。代码使用 C 语言写出,包含:列表,数学矩阵操作和状态及 CRC 等运算法则。目前 CoreMark 已迅速成为测量与比较处理器性能的业界基准测试。CoreMark 的得分越高,意味着性能更高。 二、代码移植 ...

2018-02-27 19:52:13

阅读数:82

评论数:0

掌控堆栈确保系统稳定 IAR技术手册翻译

翻译自 IAR 技术手册 堆和栈在嵌入式系统中是非常基础的概念。正确设置堆和栈的大小对于系统的稳定可靠非常重要。不正确设置时,系统可能会以某种非常奇怪的方式崩溃而造成灾难性的后果。 堆和栈的大小必须被程序员设置。通常情况下计算栈使用量都是非常困难的,但是在小型嵌入式系统中却比较容易,并且理解栈...

2018-01-06 16:23:57

阅读数:195

评论数:0

Nexus5 安装Gapps

一、前言 Nexus5的第三方ROM非常多,这些第三方ROM一般都不带有某种服务(你懂就好)。一般可通过刷入OpenGapps项目提供的插件包来实现。 目前使用的魔趣ROM,刷机完成后,system分区已经被使用了93%,Nexus5的 system分区约为1G,这就导致了连体积最小的 Ope...

2018-01-05 22:59:31

阅读数:157

评论数:0

IAR DLIB Library heap usage statistics IAR heap 分析

翻译自 IAR Technical Note 28545 《IAR DLIB Library heap usage statistics》 update 2017/9/22 介绍关于堆的描述在《IAR C/C++ Development Guide for ARM》的 Dynamic memory...

2018-01-03 20:47:56

阅读数:179

评论数:0

STM32 USB无法连接电脑

一、说明在调试 STM32 USB device MSC 功能时,使用官方提供的库和示例项目,电脑可以正确识别设备,也可以正常操作。但是将 USB 部分的代码移植到自己的工程后,发现电脑无法正确识别设备,有时会在右下角显示无法识别设备。二、解决方法在main.c中添加 hal_delay() 函数...

2017-12-06 22:26:10

阅读数:1090

评论数:0

树莓派内核升级的三种方式

一、前言树莓派使用的镜像比较旧了,可以通过两种方式进行升级。一种是本地下载编译升级,即Local build,还有一种采用交叉编译。本次使用第一种方式升级内核。二、升级过程 1、目前的内核版本,使用 uname -a 查看 2、使用 sudo apt-get install git bc 安装必备...

2017-10-22 22:00:25

阅读数:666

评论数:0

电脑使用模拟器玩手机游戏

一、前言我玩过的游戏并不少,坚持玩下来的只有一个养成类游戏《梦想小镇》,英文名township。虽说玩了也有好几年了,但基本上是玩一段时间就卸载,过很久又重新下载开始玩。好在这个游戏可以使用脸书账号备份,因此进度没丢。手机屏幕小,玩起来视野比较小,在电脑上鼠标玩起来也会比较爽。二、模拟器模拟器使用...

2017-10-22 21:52:40

阅读数:452

评论数:0

STM32 定时器输入捕获实现红外遥控数据接收

之前已经写过了一个使用定时器普通计时功能来识别红外遥控数据的文章。本次是使用定时器输入捕获来实现,这种方法比起定时器普通计数来说要更加复杂一些,不过效果会更好。 一、原理1、红外发射协议 红外发射协议已经在之前的文章中写过,在此就不赘述。 2、定时器计数和输入捕获 定时器就是按照一个特定的频率对计...

2017-09-11 16:47:59

阅读数:1361

评论数:0

Arduino 按键实验

一、功能实现按键控制LED亮灭。按下点亮,再次按下熄灭。二、原理图三、代码int ButtonState; int ButtonLastState; int ButtonCounter;void setup() { // put your setup code here, to run onc...

2017-08-19 20:14:35

阅读数:1344

评论数:0

STM32 定时器实现红外遥控数据接收

一、原理1、红外发射协议 红外通信的协议有很多种。这个实验使用的是NEC协议。这个协议的采用PWM的方法进行调制,利用脉冲宽度来表示0和1。 NEC 遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、控制码...

2017-08-08 23:11:06

阅读数:1413

评论数:0

leetcode: power of three 三种解法

一、题目leetcode 上有这么一道题,power of three.题目如下: Given an integer, write a function to determine if it is a power of three. 要求: Could you do it without ...

2017-08-01 22:16:39

阅读数:286

评论数:0

STM32 BSRR BRR ODR 寄存器解析

一、用法经常会看到类似如下的宏定义语句,用于对已经初始化后的 IO 口输出高、低电平。#define SET_BL_HIGH() GPIOA->BSRR=GPIO_Pin_0 #define SET_BL_LOW() GPIOA->BRR=G...

2017-08-01 11:54:09

阅读数:599

评论数:2

C语言变量声明加冒号的用法

原文链接:博客园 C语言变量声明加冒号的用法有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的...

2017-06-30 12:12:24

阅读数:268

评论数:0

utf-8 to unicode

一、utf-8 unicode utf-16 1、unicode 使用两字节表示字符。 2、utf-8 和 utf-16均为变长编码,使用1~4个字节来表示字符。 3、utf-8 和 utf-16是不一样的,汉子使用 unicode 表示是两个字节,utf-8 是三个字节,utf-16 是两个字节...

2017-05-17 00:06:07

阅读数:337

评论数:0

WIN10版OneDrive不能登录,显示正在同步其他账户

一、错误现象前几天通过Win10系统的推送进行了小版本的更新,更新之后需要重写登陆OneDrive,但是登陆却出现错误,提示正在同步其他账户,根据系统的指示在设置中更改账号并不能解决。 二、解决方法1、控制面板卸载OndDrive不过一般在控制面板是找不到OneDrive的,因此需要先执行安装包...

2017-05-14 10:44:07

阅读数:2305

评论数:0

WIN10 更新系统后,串口无法连接

一、问题 1、WIN10 更新系统后,无法连接 ST 开发板上 USB 转串口,但可以正常的下载程序。 二、解决方法 1、尝试更改 COM 口,例如从 COM3 转为 COM4。 2、尝试更新 ST-LINK 的固件版本,如下: 之后便可正常使用了:

2017-04-26 09:41:47

阅读数:3398

评论数:3

C语言 查找字符串子串 返回位置

主要的思路就是,不断的从母串 str1 中取出和子串长度相等的临时子串 temp_str,与子串 str2 进行比较。没有找到子串,返回 -1;成功找到子串,返回子串首字母在母串中的位置,该位置从 0 开始。#include <stdio.h> #include <string....

2017-04-12 19:12:43

阅读数:6211

评论数:0

制作字库(Bin文件合并 C2BIN)

一、点阵文件生成 1、使用点阵字库生成器生成文字的点阵信息,采用 UNICODE 编码批量生成。 2、如果具有 C 文件的字库,例如 STM32 开发板的库函数 x:\en.stm32cubef4\STM32Cube_FW_F4_V1.14.0\Utilities\Fonts 中的字库 C 文件,...

2017-04-06 20:04:01

阅读数:1475

评论数:0

字符串指针与字符数组的区别

本文转自 CSDN 博客http://blog.csdn.net/okliujieko/article/details/6821321, 代码部分略作修改,从C++ 转成 C;修改了原文中的错别字;增加部分内容 用字符数组和字符指针变量都可实现字符串的存储和运算。但是两者是有区别的。在使用时...

2017-03-18 14:04:06

阅读数:273

评论数:0

Source Insight marco:MultiLineComment

一、使用场景Suorce Insight 中内置了一些实用的快捷键命令,可以在 Options->Key Assignments 中看到。另外,SI 还提供了用户自己添加功能的方法,就是 marco 指令。SI 内置了 13 种快键指令,例如:Marco: KillLine //删...

2017-03-16 18:38:01

阅读数:694

评论数:0

I2C Bit-Bang 程序分析

一、Bit Bang关于 Bit Bang 的解释:Use software to control serial communication at general-purpose I/O pins,简单来讲就是使用软件通过 IO 脚去实现 I2C 的时序从而使用 I2C 协议进行通信。这样做的好处...

2017-03-16 18:31:25

阅读数:524

评论数:0

Source Insight 更新4.0版本

一、使用体验 source insight 终于大版本更新了。我开始使用 SI 是去年,那时候是 3.5 的版本,就觉得这是一款神器,搭配 Keil 和 IAR 等编译软件使用,可以提高单片机编程的效率。SI 有很多的特性是 keil 和 IAR 不具备的,作为一个代码编辑软件来说,很多功能确实...

2017-03-11 10:01:56

阅读数:7403

评论数:2

f_open()使用错误记录

一、现象 调用函数 f_open() 后,程序崩溃,调试后发现,单片机产生硬件中断,即软件跳入如下部分: void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ ...

2017-03-10 18:48:23

阅读数:1053

评论数:0

STM32 SysTick定时器

一、说明SysTick 定时器是实时操作系统专用的,但是也可以作为一个标准的递减计数器使用。它具有以下特点: 1、24位递减计数器(16777216) 2、自动装填能力 3、计数器达到 0 时,有可屏蔽的系统中断产生。 4、可编程时钟源 (HCLK 或者 HCLK/8) 该定时器具有四个寄存器,如...

2017-03-02 19:12:27

阅读数:384

评论数:0

STM32 延时函数高级用法分析

一、使用场景第一种情况,在使用普通 STM32 延迟函数,类似于 HAL_Delay(time),由于该函数是使用循环去判断及延时的,所以在执行该函数时整个程序会在此处等待定时器的中断服务函数修改参量使得循环判决条件不成立,从而继续程序的执行,同时也达到延迟时间的效果。由于使用的是系统的定时器进行...

2017-03-01 20:44:42

阅读数:2916

评论数:0

STM32 延时函数解析

一、函数原型STM32官方提供的函数库中,可以找到类似于 HAL_Delay() 这样的函数。这个函数的就是通过使用定时器,达到一个较为精确的时间延迟,提供给用户调用。这个函数一般包含在类似于 stm32f4xx_hal.c 这样的函数中。函数原型如下:__weak void HAL_Delay(...

2017-02-28 15:29:23

阅读数:1720

评论数:0

FatFs 使用中文长文件名

一、说明 使用长文件名,一般会是在使用 f_readdir() 这个函数时碰到,这个函数的功能就是获取上一步使用 f_opendir() 打开的文件夹中的内容,并将文件信息保存到定义的结构体。结构体内容如下, 里面包含有文件大小,上一次修改日期,文件属性,文件名等。可见,普通文件名是存在一...

2017-02-24 13:41:06

阅读数:1390

评论数:0

树莓派3 安装OSMC系统搭建媒体服务

OSMC是一款基于 Linux 免费开源的媒体播放系统。目前支持树莓派1、2、3、zero,vero,Apple TV这几款硬件平台。 一、必备工具 1、树莓派3 2、OSMC OS 3、内存卡(推荐8G以上) 4、显示器(可通过hdmi转vga线连接到vga显示器) 5、2A的电源适配器 二、...

2017-02-07 13:23:32

阅读数:12675

评论数:0

树莓派3 安装Flint OS

Flint OS 是基于最新的Linux长期支持版4.4内核版本和最新的稳定版Chromium OS r55开发的操作系统。更多的介绍可以上官网的视频介绍。一、必备工具 1、树莓派3 2、Flint OS 3、内存卡(推荐8G以上) 4、显示器(可通过hdmi转vga线连接到vga显示器) 二、安...

2017-02-04 14:01:27

阅读数:4012

评论数:2

JRE运行环境出错导致无法安装STM32CubeMX解决方法

一、问题安装 STM32CubeMX 一直提示需要安装JAVA运行环境,提示界面如下: 但实际上已经正确安装了JRE,如下为JAVA版本。 问题原因:我的电脑上具有很多版本的JRE,并且有一个版本注册表信息出错,所以无法正常卸载。二、解决方法 1、先完整卸载目前已安装的JAVA版本,可利用...

2017-01-23 15:04:40

阅读数:2448

评论数:1

搭建kindleEAR为kindle推送RSS订阅

一、简介kindleEAR是一个运行在Google App Engine(GAE)上的Kindle个人推送服务应用,生成排版精美的杂志模式mobi/epub格式自动每天推送至您的Kindle或其他邮箱。此应用目前的主要功能有: 支持类似Calibre的recipe格式的不限量RSS/ATOM或网页...

2017-01-16 16:51:37

阅读数:2949

评论数:0

树莓派3 安装谷歌物联网系统-Android Things

一、必备工具 1、树莓派3 2、Android Things安装镜像 3、Windows 10 IoT 核心版仪表板 4、内存卡(推荐8G以上) 5、显示器(可通过hdmi转vga线连接到vga显示器) 6、Android Studio 二、安装步骤 1、下载Android Things 下...

2017-01-12 11:47:25

阅读数:6235

评论数:9

树莓派3 安装Win10 IoT 操作系统

一、必备工具 1、树莓派3 2、Windows 10 IoT Core Insider Preview 3、Windows 10 IoT 核心版仪表板 4、内存卡(推荐8G以上) 5、显示器(可通过hdmi转vga线连接到vga显示器) 二、安装步骤 1、下载并安装Windows 10 IoT 核...

2017-01-11 20:04:39

阅读数:26682

评论数:7

Nexus5恢复官方系统,刷Recovery,刷Xposed框架,获取Root权限

谷歌官方不在对Nexus5手机升级最新的Android7.0系统,但是在XDA论坛上已经有开发者制作了第三方刷机包。刷机之后体验了一段时间,就没怎么用了。后来出现了闪屏的现象,无法判断是否是因为升级系统导致的,也不排除是硬件的原因。只好刷回官方匹配的6.1系统,刚刷回时依然出现,用了几次后发现居然...

2016-12-19 09:21:05

阅读数:2771

评论数:0

Kindle Paperwhite 2 USB升级

关于更新方法具体请看Kindle Paperwhite2(第6代)5.7.2.1固件升级教程一、升级过程 下载 拷贝到kindle 升级提示 重启升级 二、更新内容 1、更新了设置界面 2、汉字注音 3、全新字体 Amazon Ember Bold

2016-12-13 22:20:48

阅读数:605

评论数:0

BCM2835 芯片数据手册(中文翻译)

1 前言1.1 概述BCM2835 具有以下可以被 ARM 安全使用的外设: 定时器 中断控制器 GPIO USB PCM/I2S DMA I2C 主机 I2C/SPI 从机 SPI0,SPI1,SPI2 PWM UART0,UART1 本数据手册旨在对这些外设的细节进行描述,以方便开发者对该芯片...

2016-12-08 19:11:14

阅读数:8677

评论数:0

关于嵌入式系统的学习路线图

来源:本文乃同济大学软件学院王院长(JacksonWan)在同济网论坛发表的帖子《谈谈软件学院高年级同学的学习方向》的第二部分。三部分依次为:一、关于企业计算方向;二、关于嵌入式系统方向;三、关于游戏软件方向。 嵌入式系统方向 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系...

2016-12-06 11:57:24

阅读数:461

评论数:0

C语言宏定义的几种简单用法

1、计算数组的大小 #define countof(a) (sizeof(a)/sizeof(*(a))) 2、转换大小写字母 #define FS_TOUPPER(x) ((((x) &amp;gt;= 'a') &amp;amp;&amp;amp; ((x)...

2016-11-29 16:49:35

阅读数:2827

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭