嵌入式
文章平均质量分 57
hb69222
这个作者很懒,什么都没留下…
展开
-
使用void*强转函数指针(编辑中)
别把函数名当成函数,justa变量typedef void (*AirCb)(void); //空回调函数typedef int (*aimFunction)(int* para1, char* para2, int para3); //要传递的目标函数void businessRegister(uint8_t *pData, uint32_t dataLen, AirCb cb){ if(NULL != cb) { int *realPa...原创 2022-03-25 22:03:35 · 2077 阅读 · 0 评论 -
结构体中动态内存的管理(malloc和free)
C语言中内存的管理主要是依据malloc和free实现的,其中malloc主要是实现内存的分配,而free则是实现内存的释放。虽然这是我们已经很熟悉的,但是还是存在一些问题。特别是当结构体中存在指针的情况下,各种问题也就会展现出来。其中最大的问题是:结构体中指针变量没有指向一块合法的内存空间,就对指针参数进行操作,这也是很多C语言程序员经常犯的错误。简单的实例如下:struct student { char*name; intscore; }s...转载 2020-07-13 10:40:19 · 806 阅读 · 0 评论 -
使用 IAR 开发 STM8 时,传入的参数被改变的原因
从Keil转到IAR,会遇到很多意想不到的怪事,因两种编译器风格不尽相同,故作记录,提醒自己。 将参数传入函数中,仿真时却看到传入的参数值被改变(多为被置零),总结原因如下: 一、 在包含此函数的.h文件中,函数参数的声明和函数定义时参数的声明不一致。 二、 使用该函数时,没有 #include 该 .h文件!!!...原创 2019-07-22 10:01:08 · 1241 阅读 · 1 评论 -
用 IAR 开发 STM8 时,简单软件延时不起作用的原因
近期有幸接手了前任工程师遗留的项目,MCU 选择的是 STM8L151XX,开发工具使用的是 IAR 。打开祖传代码后,通读了一遍,就用ST-Link烧录进去跑程序,结果发现和预想的效果不太一致,尤其是初始化LED闪烁的部分。 代码中LED闪烁原理比较简单,就是传统的更改GPIO电平,再软件延时几百毫秒,然后再改变GPIO电平的方法,这种传统的操作在学单片机第一课就已经开始使用了...原创 2019-07-19 09:38:06 · 1303 阅读 · 0 评论 -
Hex、bin、axf、elf格式文件小结
一、HEXHex文件,一般是指Intel标准的十六进制文件。Intelhex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般编程器均支持生成此种格式文件。如,KEIL下可通过配置相关选项来生成HEX目标文件。HEX文件由记录(RECORD)组成。在HEX文件里面,每一行代表一个记录。形如:BBAAAATTHHHH...HHHHCC...转载 2019-04-27 09:33:57 · 681 阅读 · 0 评论 -
用Keil编译C51和ARM时,分别生成.Bin文件的方法
一、C51 1、使用srec_cat.exe a、Keil工程需生成.hex文件 b、将srec_cat.exe放在工程路径中任意文件夹下 c、新建一个文本文档,之后填写如下内容,保存后更名为 1.bat (后缀必须为.bat) CD obj ...原创 2018-08-28 12:21:50 · 10141 阅读 · 2 评论 -
入门级详细USB移植教程
同上一篇MPU6050一样,我还是写一篇关于USB的帖子,在圈圈等玩USB的大神面前,我掌握的USB知识实在是九牛一毛,所以这篇帖子加上了入门级的修饰语。写这篇帖子主要是为了那些想快速开发USB的人,至于想深入了解USB协议,可以先学完我这个再去看看别的高级教程可能会好点,虽然我强调自己掌握的USB知识不多,但是对于一般的应用已经足够,我这里主要是学会怎么去用USB做自己的东西,而且我觉得刚学完一...转载 2018-05-03 10:30:05 · 3448 阅读 · 2 评论 -
产品在线升级的功臣——IAP
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某...原创 2018-04-04 09:07:20 · 287 阅读 · 0 评论 -
USB枚举过程
USB枚举详细过程剖析 1.主机集线器检测到新设备 主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有15kΩ的下拉电阻,而每一个设备在D+都有一个1.5kΩ的上拉电阻。当用USB线将PC和设备接通后,设备的上拉电阻使信号线的电位升高,因此被主机集线器检测到。) 2.主机发送Get_Status请求 每个集线器用中断传输来报告在集线器上的事件。当主...转载 2018-04-16 08:47:36 · 148 阅读 · 0 评论 -
STM32是否可以跑linux
操作系统有两种 用MMU的 和 不用MMU的用MMU的是Windows MacOS Linux Android不用MMU的是FreeRTOS VxWorks ucOS...CPU有两种 带MMU的 和 不带MMU的带MMU的有 Cortex-A系列 ARM9 ARM11系列不带MMU的有 Cortex-M系列...STM32是M系列...不可能运行Linux转载 2018-01-09 11:06:47 · 5991 阅读 · 0 评论 -
STM32和Linux
Linux和stm32一个是软件平台一个是硬件平台,完全不一样的(记住,是平台!)。这样说吧,既然你喜欢单片机,就先学stm32,把硬件基础打牢,尤其是各种总线(usb、iic、spi...)、各种外设模块(红外、温湿、mpu6050...),然后就把注意力集中到ucosii上,也就是说学会把你的任务放到操作系统这个架构里完成,而不是简单地写程序--对操作系统机制的掌握是你和周围的单片机同事拉...转载 2018-01-09 11:05:58 · 3640 阅读 · 0 评论 -
串口、COM口、TTL、RS232、RS485区别详解
一个嵌入式工程师,无论你做硬件还是软件都会接触到串口、COM口、TTL、RS232、RS485这些概念的。你是否也会一遇到这个概念就要百度一下,谷歌搜过呢?下面就为大家介绍它们之间恩怨情仇吧。1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。2、接设备的时候,一般只接GND RX TX。不会接Vcc或者+3.3v的电源线,避转载 2017-12-14 10:49:14 · 5370 阅读 · 1 评论