自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cyang's blog

嵌入式入门/*到头发护理*/

  • 博客(141)
  • 资源 (7)
  • 收藏
  • 关注

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

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

2018-03-02 14:54:06 17652 3

原创 STM32L432 CoreMark跑分测试

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

2018-02-28 12:55:50 1536

原创 STM32F469 CoreMark跑分测试

一、CoreMark 介绍CoreMark 是一项测试处理器性能的基准测试。代码使用 C 语言写出,包含:列表,数学矩阵操作和状态及 CRC 等运算法则。目前 CoreMark 已迅速成为测量与比较处理器性能的业界基准测试。CoreMark 的得分越高,意味着性能更高。二、代码移植移植 CoreMark 的测试代码到 STM32 平台非常简单。ST 官方资料文档就有移植步骤的详细说...

2018-02-27 19:52:13 5303

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

翻译自 IAR 技术手册堆和栈在嵌入式系统中是非常基础的概念。正确设置堆和栈的大小对于系统的稳定可靠非常重要。不正确设置时,系统可能会以某种非常奇怪的方式崩溃而造成灾难性的后果。堆和栈的大小必须被程序员设置。通常情况下计算栈使用量都是非常困难的,但是在小型嵌入式系统中却比较容易,并且理解栈的使用也可以解决一些很难发现的运行时错误。另一方面,给栈分配过多的空间也意味着对内存资源的浪费。对于大

2018-01-06 16:23:57 1311

原创 Nexus5 安装Gapps

一、前言Nexus5的第三方ROM非常多,这些第三方ROM一般都不带有某种服务(你懂就好)。一般可通过刷入OpenGapps项目提供的插件包来实现。目前使用的魔趣ROM,刷机完成后,system分区已经被使用了93%,Nexus5的 system分区约为1G,这就导致了连体积最小的 OpenGapps pico包都无法安装。返回错误70,表示没有足够的空间安装文件。二、解决方法

2018-01-05 22:59:31 1169

原创 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 on the heap 一章中。本技术手册仅描述在应用程序中如何统计堆的使用量。通过跟踪 malloc

2018-01-03 20:47:56 1256

原创 STM32 USB无法连接电脑

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

2017-12-06 22:26:10 15154

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

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

2017-10-22 22:00:25 22362 3

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

之前已经写过了一个使用定时器普通计时功能来识别红外遥控数据的文章。本次是使用定时器输入捕获来实现,这种方法比起定时器普通计数来说要更加复杂一些,不过效果会更好。一、原理1、红外发射协议红外发射协议已经在之前的文章中写过,在此就不赘述。2、定时器计数和输入捕获定时器就是按照一个特定的频率对计数值进行加一或减一操作,当数值溢出时则产生一个标志或中断。定时器的输入捕获就是可以测量输入信号的脉冲宽

2017-09-11 16:47:59 13772 1

原创 Arduino 按键实验

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

2017-08-19 20:14:35 21183 1

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

一、原理1、红外发射协议红外通信的协议有很多种。这个实验使用的是NEC协议。这个协议的采用PWM的方法进行调制,利用脉冲宽度来表示0和1。NEC 遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、控制码、控制反码均是 8 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性(可用于

2017-08-08 23:11:06 16570 8

原创 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 using any loop / recursion?就是说给出一个数,判断该数是否是 3 的 n 次

2017-08-01 22:16:39 794

原创 STM32 BSRR BRR ODR 寄存器解析

一、用法经常会看到类似如下的宏定义语句,用于对已经初始化后的 IO 口输出高、低电平。#define SET_BL_HIGH() GPIOA->BSRR=GPIO_Pin_0 #define SET_BL_LOW() GPIOA->BRR=GPIO_Pin_0其作用类似于如下两个库函数,void GPIO_SetBits(GPIO_Typedef* GPI

2017-08-01 11:54:09 9417 9

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

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

2017-06-30 12:12:24 1724

原创 utf-8 to unicode

一、utf-8 unicode utf-161、unicode 使用两字节表示字符。2、utf-8 和 utf-16均为变长编码,使用1~4个字节来表示字符。3、utf-8 和 utf-16是不一样的,汉子使用 unicode 表示是两个字节,utf-8 是三个字节,utf-16 是两个字节。4、utf-8 只是 unicode的一种实现方式,类似的方式还有 utf-16 和 utf-32。

2017-05-17 00:06:07 1728

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

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

2017-05-14 10:44:07 15521

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

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

2017-04-26 09:41:47 13100 3

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

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

2017-04-12 19:12:43 26937 5

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

一、点阵文件生成1、使用点阵字库生成器生成文字的点阵信息,采用 UNICODE 编码批量生成。 2、如果具有 C 文件的字库,例如 STM32 开发板的库函数 x:\en.stm32cubef4\STM32Cube_FW_F4_V1.14.0\Utilities\Fonts 中的字库 C 文件,可以使用 C2B转换助手,这个软件可以将 C 文件中的字符数组信息转换成 bin 文件。结果如下图所示:

2017-04-06 20:04:01 7980

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

本文转自 CSDN 博客http://blog.csdn.net/okliujieko/article/details/6821321, 代码部分略作修改,从C++ 转成 C;修改了原文中的错别字;增加部分内容用字符数组和字符指针变量都可实现字符串的存储和运算。但是两者是有区别的。在使用时应注意以下几个问题:1.字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放

2017-03-18 14:04:06 722

原创 Source Insight marco:MultiLineComment

一、使用场景Suorce Insight 中内置了一些实用的快捷键命令,可以在 Options->Key Assignments 中看到。另外,SI 还提供了用户自己添加功能的方法,就是 marco 指令。SI 内置了 13 种快键指令,例如:Marco: KillLine //删除整行Marco: PasteKillLine //粘贴刚刚删除的一行...只不过默认这些功能都是没有绑定

2017-03-16 18:38:01 1792

原创 I2C Bit-Bang 程序分析

一、Bit Bang关于 Bit Bang 的解释:Use software to control serial communication at general-purpose I/O pins,简单来讲就是使用软件通过 IO 脚去实现 I2C 的时序从而使用 I2C 协议进行通信。这样做的好处是可以突破硬件上的限制,例如芯片不具有硬件 I2C 模块,或者硬件 I2C 模块损坏,又或者使用硬件 I

2017-03-16 18:31:25 4425

原创 Source Insight 更新4.0版本

一、使用体验 source insight 终于大版本更新了。我开始使用 SI 是去年,那时候是 3.5 的版本,就觉得这是一款神器,搭配 Keil 和 IAR 等编译软件使用,可以提高单片机编程的效率。SI 有很多的特性是 keil 和 IAR 不具备的,作为一个代码编辑软件来说,很多功能确实很强大。只不过官方久久不更新,所以很多现在主流 IDE 或者代码编辑器的一些实用功能都不支持。这次更新,

2017-03-11 10:01:56 14459 4

原创 f_open()使用错误记录

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

2017-03-10 18:48:23 6023 3

原创 STM32 SysTick定时器

一、说明SysTick 定时器是实时操作系统专用的,但是也可以作为一个标准的递减计数器使用。它具有以下特点:1、24位递减计数器(16777216)2、自动装填能力3、计数器达到 0 时,有可屏蔽的系统中断产生。4、可编程时钟源 (HCLK 或者 HCLK/8)该定时器具有四个寄存器,如下表所示:一般,该定时器的计数周期为一毫秒,则寄存器LOAD中的值根据 MCU 主频的不同而不同。例如,

2017-03-02 19:12:27 1551

原创 STM32 延时函数高级用法分析

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

2017-03-01 20:44:42 9592

原创 STM32 延时函数解析

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

2017-02-28 15:29:23 29510 2

原创 FatFs 使用中文长文件名

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

2017-02-24 13:41:06 4872 2

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

OSMC是一款基于 Linux 免费开源的媒体播放系统。目前支持树莓派1、2、3、zero,vero,Apple TV这几款硬件平台。 一、必备工具1、树莓派32、OSMC OS3、内存卡(推荐8G以上)4、显示器(可通过hdmi转vga线连接到vga显示器)5、2A的电源适配器二、安装步骤安装的方法有三种,如下。方法一比较简单,也是常用的为树莓派烧写系统的方式;方法二为树莓派官方推荐

2017-02-07 13:23:32 28010 2

原创 树莓派3 安装Flint OS

Flint OS 是基于最新的Linux长期支持版4.4内核版本和最新的稳定版Chromium OS r55开发的操作系统。更多的介绍可以上官网的视频介绍。一、必备工具1、树莓派32、Flint OS3、内存卡(推荐8G以上)4、显示器(可通过hdmi转vga线连接到vga显示器)二、安装步骤1、下载安装镜像 2、烧写内存卡 烧写的方法可以看官网的介绍,写的非常详细,推荐直接使用极简方

2017-02-04 14:01:27 7371 3

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

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

2017-01-23 15:04:40 22604 1

原创 搭建kindleEAR为kindle推送RSS订阅

一、简介kindleEAR是一个运行在Google App Engine(GAE)上的Kindle个人推送服务应用,生成排版精美的杂志模式mobi/epub格式自动每天推送至您的Kindle或其他邮箱。此应用目前的主要功能有:支持类似Calibre的recipe格式的不限量RSS/ATOM或网页内容收集不限量自定义RSS,直接输入RSS/ATOM链接和标题即可自动推送多账号管理,支持多用户和多

2017-01-16 16:51:37 6037

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

一、必备工具1、树莓派32、Android Things安装镜像3、Windows 10 IoT 核心版仪表板4、内存卡(推荐8G以上)5、显示器(可通过hdmi转vga线连接到vga显示器)6、Android Studio二、安装步骤1、下载Android Things 下载之后解压出ISO文件。2、使用Win32DiskImager刷入镜像 写入的过程比较慢,大概需

2017-01-12 11:47:25 7895 11

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

一、必备工具1、树莓派32、Windows 10 IoT Core Insider Preview3、Windows 10 IoT 核心版仪表板4、内存卡(推荐8G以上)5、显示器(可通过hdmi转vga线连接到vga显示器)二、安装步骤1、下载并安装Windows 10 IoT 核心版仪表板 点击获取IoT核心版仪表板,下载之后进行安装。2、下载,解压并安装Windows 1

2017-01-11 20:04:39 51591 13

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

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

2016-12-19 09:21:05 11638

原创 Kindle Paperwhite 2 USB升级

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

2016-12-13 22:20:48 1444

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

1 前言1.1 概述BCM2835 具有以下可以被 ARM 安全使用的外设:定时器中断控制器GPIOUSBPCM/I2SDMAI2C 主机I2C/SPI 从机SPI0,SPI1,SPI2PWMUART0,UART1本数据手册旨在对这些外设的细节进行描述,以方便开发者对该芯片移植操作系统。有一些被 GPU 控制的外设将不会出现在本数据手册。不推荐从 ARM 访问这些外设。1.2

2016-12-08 19:11:14 34382

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

来源:本文乃同济大学软件学院王院长(JacksonWan)在同济网论坛发表的帖子《谈谈软件学院高年级同学的学习方向》的第二部分。三部分依次为:一、关于企业计算方向;二、关于嵌入式系统方向;三、关于游戏软件方向。嵌入式系统方向嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏

2016-12-06 11:57:24 711

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

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

2016-11-29 16:49:35 7644

原创 STM32 BootLoader升级固件

BootLoader关于Bootloader,从书上的文字描述,很难理解这个名词是什么,有什么用。这次用到了,算是有了更进一步的认识。一、知识点1、BootLoader就是单片机启动时候运行的一段小程序,这段程序负责单片机固件的更新,也就是单片机选择性的自己给自己下程序。可以更新,也可以不更新,更新的话,BootLoader更新完程序后,跳转到新程序运行;不更新的话,BootLoader直接跳转到

2016-11-28 16:43:37 43271 11

Clover_Setup_3.0.406

早期无广告版本,稳定快速,几年前保存的,一只用到现在。

2019-04-09

source insight4 sublime 主题

source insight4 sublime主题分享 参看博客 https://blog.csdn.net/u011303443/article/details/61413583

2018-10-18

j-link v9 bootloader

j-link v9 bootloader 修复 j-link 调固件,方法见https://blog.csdn.net/u011303443/article/details/82685875

2018-09-14

j-link v9 修复

用于修复 j-link v9的固件。 修复方法在见博客https://blog.csdn.net/u011303443/article/details/82685875

2018-09-13

en.stsw-link004

en.stsw-link004 用于下载 STM32 程序 官方原版,给无法从官网下载的人

2018-05-05

j-link最新驱动 18/04/20

jlink最新驱动,支持最新版本JLINK V9,版本号为6.32,官方原版。

2018-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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