• j-link v9 修复记录

    j-link v9

    主控: stm32f205RC

    现象

    • 1、给 M0 下载固件的过程中经常出错,提示找不到M0。需要反复尝试很多次才可以下载。
    • 2、在一次正常的拔线断电后,再也无法识别,灯也不亮了。

    修复方法一

  • MPEG Audio 简述

    MPEG AUDIO 简介

    MP3 是 MPEG Layer3 音频压缩技术的简写,这种技术可在音质极少损伤的情况下获取更好的压缩性能。MP3文件可以被压缩成不同的速率,文件压缩的越小,音质损伤越大。标准的压缩比例为10:1,一段3分钟的音频数据压缩后只需4MB大小。

    MPEG 音频压缩算法由联合图像专家组开发,作为高质量数字音频数据压缩的国际标准。MPEG-1 音频压缩算法基于两种机理来减少音频信号码率额,一是利用统计相关性,去除音频信号的冗余,二是利用人耳的心理声学现象如频率掩蔽和时间掩蔽等,去除听觉冗余。分为三个层次,分别是 layer1,layer2,layer3,每个层次针对不同的应用,但是三个层次的基本模型是相同的,每个后继的层都有更高的压缩比,但是需要更加复杂的编解码器。

    更新的版本是 MPEG-2,这个版本扩展了MPEG-1的采样率标准,在 MPEG-1 的 32kHz,44.1kHz, 48kHz 的基础上,支持16kHz,22.05kHz,24kHz 采样率。并且MPEG-2还支持多通道。

    有一个非官方的标准MPEG-2.5,支持更低的采样率,支持8KHz,11.025kHz 和 12KHz。

  • 前导零计数

    前导零计数

    计算一个 32位 数头部 0 的个数。例如 1 前面有 31 个0, 0 则前面有 32 个0。

    C 语言实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int cntLeadingZeros(uint32_t i)
    {
    int ret = 0;

    uint32_t temp = ~i;

    while(temp & 0x80000000)
    {
    temp <<= 1;
    ret++;
    }
    return ret;
    }
  • fread 返回 0

    fread 函数一直返回 0,检查过读取的数量不会超过文件大小,错误发生在打开文件时错误。

    错误代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    FILE *in_file, *out_file;
    unsigned int open_files(const char *in_file_name, const char *out_file_name)
    {
    if( in_file = fopen(in_file_name, "rb") == NULL) //err
    return 0;

    if( out_file = fopen(out_file_name, "wb") == NULL) //err
    return 0;

    return 1;
    }
  • 记一款游戏--《程序员升职记》

    这里写图片描述

    最近在玩一款编程类的游戏,叫做《程序员升职记》,steam 平台只需¥36。通过组合几条非常基本的指令,例如加减、自加、自减、比较、跳转,实现一些小功能,例如简单的数值绝对值输出、两数乘法、阶乘运算、反转字符串等。游戏的本质是一款支持 11 条指令,最多支持 24 字节内存的 8 位 cpu 的运行。

  • PCM 转 WAV

    PCM 数据无法直接通过播放器打开,因为少了 44 字节的文件头,这里面最主要的信息是描述该 PCM 的采样频率,通道数,以及位数。

    双击 pcmToWav.exe,拖入待转换的 PCM 数据,输入通道数和采样频率,默认使用 16-bit 表示一个采样点。等待程序运行结束,就会生成一个同名的 .wav 文件。

    这里写图片描述

    python 源码

  • 文件转换为C数组 fileToC

    fileToC

    github项目地址

    简单说明

    fileToC 是一款使用 python 编写的程序,可以将任意文件的二进制数据转换为 .C 文件的数组,以便程序编译。

    双击 fileToC.exe 程序,将要转换的 test.any 文件拖入命令行,等待程序自动转换,结束后便可以得到一个和该文件同名的 .c 文件

  • CSDN博客数据导出

    CSDN2HEXO 源码地址

    CSDN2HEXO

    CSDN2HEXO 是一款基于CSDN开放平台 的 csdn blog 内容下载器, 可以下载博客中的文章内容和图片,文章保存为 markdown 格式,图片可下载无水印图片,并根据文章标题生成文件夹存储相关数据。

    用法

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

    本文转载自 博客园

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

    C++中我们尚可用类来替代结构体,但是,C语言中是没有类的,只能用结构体,但很多时候,我们需要隐藏结构体的字段,不让外界直接访问,而是通过我们写的函数进行间接访问,这样就提高了程序的封装性。

  • C语言 符号的不同意义

    C语言的许多符号在不同的上下文环境里有不同的意义,相当于被“重载”了。如下展示了一些符号的不同意义。

    static

    • 在函数内部,表示该变量的值在各个调用间一直保持延续性。类似与全局变量,区别在于作用域不同。
    • 在函数外部,表示该函数或者变量只对本文件可见。

    extern

    • 用于函数定义,表示全局可见(属于冗余,因为函数名在默认情况下具有外部的链接属性,如果函数没有在调用它的转换单元中定义,编译器就会把这个调用标记为外部,让链接程序处理它)
12345615