
嵌入式基础
Howardk
这个作者很懒,什么都没留下…
展开
-
stm32工程错误,包含core_cm3.h
在包含#include "core_cm3.h"时,前面加#include "stm32f10x.h"文件原创 2020-06-03 09:12:55 · 2443 阅读 · 0 评论 -
Keil调试局部变量显示"not in scope"的问题解决
今天在调试程序的时候,发现函数返回值赋值给变量时,变量值总是显示"not in scope",无法看到变量被赋的值。出现这种情况的原因是这个局部变量没被分配到内存,或者变量被编译器优化了。编译器优化级别高的时候,编译器为了优化,可能并没有按照我们想要执行的代码汇编。解决方法:降低Keil的编译优化选项,如下图所示,优化等级改为0(默认为3)。...转载 2019-12-14 13:44:42 · 12957 阅读 · 3 评论 -
stm32——自定义HID设备
一、开发环境硬件平台:stm32f767软件平台:keil5,cubmx二、cubemx创建工程1、配置RCC2、USB_OTG_FS,选择Device_Only模式3、Middleware——USB_DEVICE4、配置一个外部中断按键作为输入5、配置时钟与生成代码三、工程代码修改1、打开usbd_custom_hid_if.c 文件,把CUSTOM_HID_Re...原创 2019-11-16 14:48:49 · 1890 阅读 · 0 评论 -
上位机——自定义HID设备与主机通讯
一、开发环境平台:vs2015头文件:#include <Windows.h>#include <SetupAPI.h>#include <hidsdi.h>#include <initguid.h>库文件:setupapi.libhid.lib二、开发流程1、获取HID设备的GUIDvoid __stdcall ...原创 2019-11-16 14:24:00 · 2412 阅读 · 0 评论 -
串口发送一帧数据时,两个字节的间隔时间是多少?
文章来源:https://blog.youkuaiyun.com/euxnijuoh/article/details/64446862串口发送一帧数据时,两个字节的间隔时间是多少?这里先搞懂什么是波特率:波特率:发送二进制数据位的速率,习惯上用 baud 表示,即我们发送一位二进制数据的持续时间=1/baud。如果波特率为9600,发送一个位需要的时间为1/9600s=0.0001042s=0...转载 2019-06-13 15:39:26 · 3099 阅读 · 0 评论 -
利用串口收发浮点数
文章来源:https://www.cnblogs.com/simonlin/p/5037449.html以下介绍两种方法,一种是利用指针,一种是利用联合体,时间宝贵的看客可以直接跳到第二种方法。这里只是讨论数据发送前和接收后的处理,不讨论具体发送过程。方法一:指针UART串口有一个缺点,就是发送和接受是一个字节一个字节的接收,如果发送的浮点数那可怎么办啊?有人会说,那就一个字节一个字...转载 2019-06-15 13:34:20 · 10716 阅读 · 8 评论 -
C语言中volatile关键字的作用
文章来源:https://blog.youkuaiyun.com/tigerjibo/article/details/7427366一.前言1.编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线...转载 2019-06-18 12:52:06 · 40804 阅读 · 3 评论 -
ARM堆栈保护/恢复现场分析
文章来源:https://blog.youkuaiyun.com/songze_lee/article/details/69951866堆栈的分类根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(DecendingStack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式,ARM 微处理器支持...转载 2019-06-28 15:57:29 · 1857 阅读 · 1 评论 -
ubuntu切换到root认证失败
文章来源:百度经验ubuntu怎么切换到root用户,我们都知道使用su root命令,去切换到root权限,此时会提示输入密码,可是怎么也输不对,提示“Authentication failure”,此时有两种情况一个是真的是密码错了,另一种就是刚安装好的Linux系统,没有给root设置密码。给root用户设置密码:命令:sudo passwd root...转载 2019-07-01 09:42:10 · 525 阅读 · 0 评论 -
the system is running in low-graphics mode
文章来源:https://www.cnblogs.com/zllwxm123/p/8532602.htmlUbuntu 16.04 开机碰到如下问题:步骤1:ctrl+alt+F1打开终端步骤2:输入以下命令cd /etc/X11 sudo cp xorg.conf.failsafe xorg.conf reboot...转载 2019-07-01 13:26:14 · 2340 阅读 · 0 评论 -
加速度计mpu6050标定
当MPU6050水平放置时,理论上Z轴感受到重力将读出16384。同时X轴和Y轴的读数将是0.可实际并不是这样的。这是由于每个芯片在制作时都不一样,数据手册上的都是理论的值,真正的芯片在水平时Z轴可能并不是16384.我们需要找到各个轴在0g重力时的计数,1g时的读数,以及-1g时的读数,得到一个补偿值,在每次读取ADC结果后都进行补偿。这个过程我们称之为标定。用数学公式表示为:...原创 2019-05-29 15:47:25 · 1887 阅读 · 0 评论 -
FFT的详细解释
文章来源:https://www.ilovematlab.cn/thread-119939-1-1.html FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。虽然很多人都知道...转载 2019-06-05 16:00:39 · 690 阅读 · 1 评论 -
Stm32 SWD连接方式
为了节省接口,可以使用SWD模式,则只需要连接4根线,即SWDCLK,SWDIO,GND,TVCC.如下图所示 ,TVCC为3.3V原创 2019-04-17 18:00:31 · 18477 阅读 · 0 评论 -
stdbool.h
MDK的编译器中不能使用bool类型,是因为没有包含stdbool.h头文件。原创 2019-04-22 20:15:15 · 1788 阅读 · 1 评论 -
奇偶校验与海明校验
原文来源:https://baijiahao.baidu.com/s?id=1594263251060755624&wfr=spider&for=pc一.为什么要有校验码? 因为在数据存取和传送的过程中,由于元器件或者噪音的干扰等原因会出现错误,这个时候我们就需要采取相应的措施,发现并纠正错误,对于错误的检测和校正,大多采取“冗余校验”的思想,即除原数据外,额...转载 2019-04-19 11:03:50 · 723 阅读 · 0 评论 -
串口基础详解
1.简介 串口只是一个接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准。没有规定接口插件电缆以及使用的协议,所以只要我们使用的接口插件电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上使用各种协议进行通讯及设备控制。典型的串行通讯标准是RS232和RS485,它们定义了电压,阻抗,但不对协议给予定义。电平逻辑:RS232:逻辑1为-3V~-15V,逻辑0为+...原创 2019-04-19 15:33:59 · 530 阅读 · 0 评论 -
PID算法理解
文章来源:http://mc.dfrobot.com.cn/thread-14783-1-1.html LZ以前有个小小的理想,就是让手边的MCU自己“思考”起来,写出真正带算法的程序。前段时间做一个比赛项目的过程中,对经典、实用的PID算法有了一点点自己的理解,就写了这些,与大家分享因为LZ想尽办法,试着用最易于理解的语言说清楚原理,不做太多的理论分析。啥是PID? P...转载 2019-05-11 21:12:53 · 251 阅读 · 0 评论 -
VMware Workstation 中添加摄像头
第一步:显示所有USB输入设备的钩钩选上,如果选不上,可以关闭虚拟机后设置。第二步:点击虚拟机右下角图标,后点击 连接,连接后效果如上图所示。第三步:使用硬件摄像头。...原创 2019-05-22 20:03:30 · 17793 阅读 · 1 评论 -
关于STM32能否使用malloc申请动态内存的问题
文章来源:https://blog.youkuaiyun.com/c12345423/article/details/53004465 首先,malloc( )属于标准C语言函数,当然可以在单片机上使用,如STM32可以先在启动文件中设置heap的大小,再使用动态内存分配: Heap_Size EQU 0x0000...转载 2019-05-30 13:53:55 · 3837 阅读 · 0 评论 -
keil-mdk arm 中program size的解析
文章来源:http://bbs.21ic.com/icview-1666996-1-1.html?fromuser=KEIL RVMDK编译后的信息Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116Code是代码占用的空间。 RO-data是 Read Only 只读常量的大小,如const型。 RW-d...转载 2019-05-31 14:32:46 · 585 阅读 · 1 评论 -
GCC的gcc和g++区别
来源:http://www.cnblogs.com/samewang/p/4774180.html看的Linux公社的一篇文章,觉得不错,内容复制过来了。其实在这之前,我一直以为gcc和g++是一个东西,只是有两个不同的名字而已,今天在linux下编译一个c代码时出现了错误才找了一下gcc和g++的区别。先描述一下今天遇到的错误:因为以前写程序的时候,写的都是cpp文件,然后就直接...转载 2019-03-18 12:44:19 · 260 阅读 · 0 评论