![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技能
happygrilclh
物联网
展开
-
单片机裸机开发时,单片机要处理多个任务,程序框架是怎样的呢?
一、轮询系统int main(void){ init_mcu(); while(1) { do_task1(); do_task1(); ... do_taskn(); }}使用条件:1. 任务比较少,二、前后台系统三、时间片轮询法...原创 2020-09-15 21:57:42 · 927 阅读 · 0 评论 -
嵌入式系统,事件框架。
在项目里面,有些工程师习惯,在定时器服务程序里面,置标志,然后在主程序里面去检查标志,如果标志被置,则去执行一些操作,这样的做法,如果项目很简单,是demo,可以这样做,因为速度快。如果项目有些小规模,不建议这样使用,因为这样会导致全局变量多,管理全局变量有些费事。建议定义一个状态,使用不同的事件去处理。例如:typedef enum{ eKeySelect = 0, ...原创 2020-04-22 09:44:28 · 780 阅读 · 0 评论 -
长数据分包的四种实现方法(源码)
不同的方式的分包源码:#include "stdlib.h"typedef unsigned char uint8_t;#define MAX_PACKAGE_LEN 8 //20 或者 64 或者 16void uart_tx(uint8_t *wr_buf, uint8_t buf_len){ uint8_t i = 0; if(buf_len > MAX...原创 2020-04-21 18:03:58 · 1643 阅读 · 0 评论 -
Keil MDK报错:Browse information of one or more files is not available的解决方法。
方法:把相对应的文件重新写一遍,删掉相对应的文件,再把重新写的添加进去,重新编译。原创 2020-03-22 23:38:53 · 824 阅读 · 0 评论 -
简总结:看门狗wdt总结
在使用看门狗的时候,注意点:1. 我一般做的项目都是小中型项目,所以我看门狗定时间隔设置为1s,如果因为芯片系统时钟,资源限制,导致看门狗定时器时间间隔设置的很短,比如,c8051f410芯片,当系统时钟为24.5MHZ时,看门狗定时器间隔最大为32.1ms,这个时候,简单的做法,在主程序里,让喂狗的频率更频繁些,尽量在32.1ms内喂狗。稍微复杂的做法,换wdt时钟源为定时器0,或者改变系统...原创 2020-03-22 20:33:17 · 1001 阅读 · 0 评论 -
使用芯片STM32L051C8T时,芯片 进入低功耗,无法使用仿真器的解决办法。
因为业务逻辑没有考虑周全,导致芯片一上电就进入低功耗模式,然后keil软件就不能识别jlink仿真器了。解决办法:硬件复位(操作复位引脚),马上点击仿真和下载(F8)。扩展:不管因为什么原因导致,芯片一上电就不能正常工作,连不上仿真器的,可以先硬件复位,再快速仿真或者下载操作。...原创 2020-03-14 20:57:48 · 1764 阅读 · 0 评论 -
C8051F410芯片,编译成功,但是程序不允许。
在C8051F 芯片的时候,全局变量定义的多了,出现了一个问题,就是编译成功,并且编译后的代码量在flash限制内,但是程序不允许。后来发现问题是,全局变量太多,看门狗未关(寄存器默认未关看门狗),导致启动文件,一直在重启运行,解决办法,在启动文件里关闭看门狗。然后上面的问题就解决了。...原创 2020-02-28 15:28:56 · 363 阅读 · 0 评论 -
车载智能天线的概念
该项目是车载智能天线产品,包括AM/FM、WIFI、BT、GPRS、GPS、4G多种类型的天线及无线模块。实现的功能是:将无线通信模块接受到的数据,通过以太网络传给汽车主机或者汽车导航系统,实现了汽车与外界无线模块之间的通信与控制。产品优点:1. 减少线束2. 实现未来车与车自身,车与外界环境的通信,车与车之间的通信。...原创 2019-10-31 10:39:29 · 2182 阅读 · 0 评论 -
为什么手机上wifi都用sdio接口,不用usb接口?
具体SDIO的规范我没研究过,但看有效代码也不过几千行的事情,一个简单的USB控制器代码就得上万行。并且USB协议是多层次的协议,类似网络协议,实现了控制器还要继续实现USBD和Class Driver的代码,以及与网络层面结合的部分,一个完整的USB WiFi驱动,代码会非常巨大,并且调试困难。我虽然不是很了解SDIO,但从代码规模上看,跟USB就差至少一个数量级,甚至是几个数量级,所以...转载 2019-10-09 10:44:18 · 2534 阅读 · 0 评论 -
单芯片
手机单芯片是指将原本数枚芯片实现的功能集成到一枚芯片中来实现,例如将数字基带、模拟基带、电源管理和多媒体芯片集成在一起。 高集成度解决方案一方面降低了元器件的采购价格;另一方面降低了终端厂商的开发难度、研发周期和成本,提高利润率。除了可以降低手机的各项研发成本之外,单芯片还能在一定程度上降低手机的功耗,是解决例如TD-SCDMA手机高功耗的有效方案之一。...转载 2019-10-08 10:37:04 · 162 阅读 · 0 评论 -
ble 可以做 蓝牙打电话,播放音乐的功能吗?
之前做智能锁的时候,我们有一个产品是“电子钥匙”,电子钥匙有两个功能,一个是转发数据的功能,一个是给设备授权。这个产品就是用低功耗蓝牙CC2541做的,涉及了蓝牙的两种工作模式,主机模式(授权功能)和从机模式(转发功能)。在那个产品的时候,我接触了低功耗蓝牙ble,进过了那个项目,我算是了解了ble的协议和使用。后来换了一家公司,老板抛给我一个工作,他说,你做过蓝牙项目,那现在有个蓝牙音箱,蓝...原创 2019-09-11 11:17:02 · 4320 阅读 · 7 评论 -
安卓手机卡顿解决的办法
买手机的时候,最好买内存8G以上,存储128G以上,如果买的手机储存少,使用两年以后,手机会开始变得卡顿,下面是解决办法:使用原机带的系统,不要随意升级系统。建议买来的手机,不要升级系统,越升级越卡。新版本的系统,专用的空间太大了,如果已经升级了,可以降级,具体操作方法:https://www.jianshu.com/p/822ba49a46e1 使用手机管理软件,对手机的缓存和垃圾,进行清...原创 2019-08-29 14:51:17 · 1734 阅读 · 0 评论 -
一键串口下载遇到的问题 RTS维持高 连接不了,解决办法。
按文档标准设置了硬件和软件,但是还是出错。硬件:按要求设置了串口,boot0,boot1。软件:搜素到串口,波特率随便设置,别的设置也按下图设置了。但是下载的时候,还是出现了如下问题:最后发现是,我进行串口下载的时候,接着JLINK。拔掉jlink, 串口下载成功。...原创 2019-08-28 16:25:56 · 1002 阅读 · 0 评论 -
双机串口通信,用消息队列平衡读写操作方法的详解。
实现的目标:串口接收到一帧有效数据包之后,命令解析,再进行相应回复。涉及的问题包括: 什么情况下,算接收完一帧数据? 第一种做法:接收完一个字节后,超时一定时间,没有再接收到数据,算接收完一帧数据。这块需要注意超时时间的计算,根据波特率评估。 第二种做法:每帧数据,包含结束标志位。 何为一帧有效的数据,需要校验数据包。 第一种...原创 2019-08-20 15:15:12 · 1451 阅读 · 0 评论 -
不同芯片和设备之间,如何稳定的,安全的通信?
今天我教大家一种技能,不同芯片和设备之间,如何稳定的,安全的通信?就以我们一般智能产品为例,给大家讲一下! 现在的智能产品,大多和手机配套使用的,设备就是我们做的产品,比如智能电锁,检测器,控制设备等等。这个设备要使用,得有两层通信,一个是设备和手机之间的通信,一个是设备之间两款芯片之间的通信,那就是三个对象之间的通信。这个设备要实现自己的功能,一是要实现通信,二还要完成自己的逻辑处原创 2017-03-12 11:19:05 · 586 阅读 · 0 评论 -
arm芯片,远程空中升级程序技术方案
arm芯片,远程空中升级程序技术背景产品上线之后,若程序存在bug或者需要增加新功能模块,在现场升级维护特别困难,需要维护人员取出控制板,来升级程序。为了方便维护人员在现场升级产品,我们做这个升级产品。不用拆装设备,实现远程升级产品。需求分析所谓远程空中升级,就是利用无线网络给指定MCU更新程序。在这里的无线设备我使用的是蓝牙(CC2541芯片或者CC2542芯片),使用的MCU是原创 2017-04-07 00:44:14 · 6027 阅读 · 2 评论 -
双机通信协议
背景在做一些物联网项目的时候,会涉及到几个mcu之间通信交互,比如我们做的设备,是一款智能家居设备,我们的设备中有两颗mcu,而这两颗mcu之间是需要进行通信联调的。需求分析做的每一款产品,客户体验要好,就要求这个产品稳定型要好,就要求两颗mcu之间地通信必须稳定可靠,这就需要它们之间高效地进行信息交互。 系统介绍在嵌入式应用中,目前常用的硬件接口有UART、SPI和I2C原创 2017-06-07 21:14:49 · 1976 阅读 · 0 评论 -
如何使用sha1方法
两年前,也使用过sha1方法,但是随着时间的远去,遗忘了它的使用方法,这一次使用sha1,搞了半天sha1结果都是错了,刚才被同事提醒了一下,才想起sha1的使用方法,赶紧记下来,进行sha1计算的数据长度,应该是可以无限大的,所以要使用迭代的思想。第一:每一次sha1计算的时候,都要重启,所以每一次计算sha1值,都要ccpSHA1Start()一下。第二:如果sha1计算的数据长度大于原创 2017-06-08 12:08:36 · 8523 阅读 · 0 评论 -
c语言实现十进制与ASCII码互转
//十进制转ASCII码//年#define KB2ASC(x) (u8)(0x30+x)//ASCII码转十进制//年#define ASC2KB(x) (u8)(x%(0x30))原创 2017-07-14 13:58:04 · 17837 阅读 · 1 评论 -
keil,iar,CodeWarrior等软件,没有破解的话,会有什么限制?
keil,iar,CodeWarrior等软件,没有破解的话,有代码容量限制,一般限制在32k或者64K,具体的限制条件,官网上会有说明。原创 2018-03-07 14:57:22 · 3757 阅读 · 0 评论 -
学习的网站
物联网世界 http://www.iotworld.com.cn/ NFC 之家 http://www.nfchome.org/ NFC中国 http://nfcchina.org/portal.php Gentoo wiki https://wiki.gentoo.org/wiki/Main_Page Linux Wireless wiki https://wireless...原创 2018-07-24 13:51:32 · 193 阅读 · 0 评论 -
PWM控制蜂鸣器相关知识
PWM控制蜂鸣器相关知识 这个电磁式蜂鸣器(外部驱动式)是靠PWM方波驱动的,下面是原理图(图1),一般使用的话,要调节出蜂鸣器出最大的声音。 原理,使用蜂鸣器的固有频率,占空比为50%。固有频率在蜂鸣器的手册上,都有说明,比如2731HZ。图二。 功耗问题:有的时候,板子的功耗会增加,可能就是因为小小的蜂鸣器,蜂鸣器不工作的时候,BEEP_PWM引脚要拉高的(通过寄存...原创 2018-08-13 14:06:13 · 13008 阅读 · 1 评论 -
串口通信接受存储方式
串口通信的接受,处理数据的方法:设置一个接受缓存,串口接受中断处,将寄存器的值给接受缓存。接受超时(用定时器做超时或者别的方式,定时超时和波特率有关)后,去处理这包数据,有效性校验,校验成功后,去应用这包数据。分析:这种方式,处理包数据的时候,是关闭了接受中断,这样会丢失数据。但是如果接受数据速率低,或者是应答式的,就可以使用这种方式。设置两个缓存,就是乒乓缓存,A缓存接受数据的时候,去...原创 2019-03-08 11:05:50 · 1614 阅读 · 0 评论 -
如何使用sha1方法
两年前,也使用过sha1方法,但是随着时间的远去,遗忘了它的使用方法,这一次使用sha1,搞了半天sha1结果都是错了,刚才被同事提醒了一下,才想起sha1的使用方法,赶紧记下来,进行sha1计算的数据长度,应该是可以无限大的,所以要使用迭代的思想。第一:每一次sha1计算的时候,都要重启,所以每一次计算sha1值,都要ccpSHA1Start()一下。第二:如果sha1计算的数据长度大于原创 2017-03-12 11:21:54 · 920 阅读 · 0 评论