<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[EFM32的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/EFM32</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; EFM32]]></copyright><item><title><![CDATA[nRF52832 BLE 入门 - I2C读写EEPROM]]></title><link>https://blog.csdn.net/EFM32/article/details/107520641</link><guid>https://blog.csdn.net/EFM32/article/details/107520641</guid><author>EFM32</author><pubDate>Wed, 22 Jul 2020 19:05:30 +0800</pubDate><description><![CDATA[EEPROM目前选用的是K24C04。容量为4KBit，即512字节。。

EEPROM的地址定义如下（注：P0的意识大概是置0）：



程序中，参考nordic-&gt;examples\peripheral\twi_sensor例程，进行修改：


#include &lt;stdio.h&gt;
#include "boards.h"
#include "app_util_platform.h"
#include "app_error.h"
#include "nrf_drv_twi.h"
#inc]]></description><category></category></item><item><title><![CDATA[nRF52832 BLE入门 - DIS Service初始化后，如何修改其中的资料]]></title><link>https://blog.csdn.net/EFM32/article/details/107520586</link><guid>https://blog.csdn.net/EFM32/article/details/107520586</guid><author>EFM32</author><pubDate>Wed, 22 Jul 2020 19:01:32 +0800</pubDate><description><![CDATA[以修改产品序列号为例：基于16.0.0版本的SDK：

1. 将ble_dis_service.c内的Serialnumber句柄暴露出来：


ble_gatts_char_handles_t* Ble_Dis_Get_Serial_Num_Handles(void)
{
    return (ble_gatts_char_handles_t*)&amp;serial_num_handles;
}

2. 在外部进行修改：


void Ble_Dis_Service_Set_SerialNumber.]]></description><category></category></item><item><title><![CDATA[AK9529 - IS07816转UART智能读卡控制器芯片(续1）]]></title><link>https://blog.csdn.net/EFM32/article/details/97400052</link><guid>https://blog.csdn.net/EFM32/article/details/97400052</guid><author>EFM32</author><pubDate>Tue, 05 May 2020 14:40:39 +0800</pubDate><description><![CDATA[上次，大致上已经连通了AK9528这颗芯片。但是其默认的模特率为38400。从速率上讲，并不是很快。幸运的是，AK9528提供了修改波特率的指令。如下所示：



其中，高波特率可以支持76800,128000。都不是常见的波特率。那么就会引入以下几个问题：

1. Linux的硬件以及软件，是否能够支持这些波特率。

2. 往AK9528发送设置波特率的指令后，什么时候AK9528会起效（即波特...]]></description><category></category></item><item><title><![CDATA[C语言结构体数组指针的动态分配]]></title><link>https://blog.csdn.net/EFM32/article/details/104644478</link><guid>https://blog.csdn.net/EFM32/article/details/104644478</guid><author>EFM32</author><pubDate>Tue, 03 Mar 2020 23:44:28 +0800</pubDate><description><![CDATA[目前有在开发一个linux的底层驱动，涉及到很多种Modbus设备。程序是通过解析json配置文件，来获知到底是访问的什么设备。刚开始，由于485设备的种类并不是很多，而且主机的每个485口下挂的设备数目，也不是很多，因此采用了静态结构体数组的方式来做设备属性和数值的缓存（Shadow）。但是目前485种类是越来越多，而且规定每个485口下，最多可以挂64个设备，如果全部用静态数组的形式，则够主机...]]></description><category></category></item><item><title><![CDATA[cjson创建数组]]></title><link>https://blog.csdn.net/EFM32/article/details/103769492</link><guid>https://blog.csdn.net/EFM32/article/details/103769492</guid><author>EFM32</author><pubDate>Mon, 30 Dec 2019 17:06:11 +0800</pubDate><description><![CDATA[这里介绍如何使用cjson，创建一个含数组的json字串。例如下面的形式：


{
    "UnixSocket":
    [
        {
            "id":0,
            "value":10.0
        }
    ]
}

干脆一些，直接上代码：


int Jsondata_Create_Json(char *pBuf, int id, i...]]></description><category></category></item><item><title><![CDATA[QPropertyAnimation- 淡入淡出并且大小转换同时动画]]></title><link>https://blog.csdn.net/EFM32/article/details/103655601</link><guid>https://blog.csdn.net/EFM32/article/details/103655601</guid><author>EFM32</author><pubDate>Sun, 22 Dec 2019 18:41:51 +0800</pubDate><description><![CDATA[在应用中，有时候会有这样一种效果，就是某一个按键按下去之后，会弹出一个带有多个按键的界面。这个动画效果，经常是淡入淡出和界面转换同时运行。在QT中，也可以实现。

这里参考的网络例子是：https://www.jianshu.com/p/0050eae56929

还是先上结果好了，点击start按键后，开始动画。



这里比较简要，所以只上主函数的代码即可：


#include "mainw...]]></description><category></category></item><item><title><![CDATA[QPropertyAnimation - Qt widget 淡入淡出效果（二）]]></title><link>https://blog.csdn.net/EFM32/article/details/103601631</link><guid>https://blog.csdn.net/EFM32/article/details/103601631</guid><author>EFM32</author><pubDate>Wed, 18 Dec 2019 17:44:45 +0800</pubDate><description><![CDATA[在上一面一篇文章中，已经基本实现了淡入淡出的效果。但是不足的地方是，所有的代码都是写在主程序里的。这对于写项目来讲，肯定是不合适的，最好能做成自定义的类，调用起来才会舒服。于是，我们接下来继续改造。改造之前，我们我们先确定一下思路。

1. 新建类的.h和.cpp文件，命名为：fadeinwidget.h和fadeinwidget.cpp

2. 该子类继承于QStackedWidget（这里为什...]]></description><category></category></item><item><title><![CDATA[QPropertyAnimation - Qt widget 淡入淡出效果（一）]]></title><link>https://blog.csdn.net/EFM32/article/details/103594811</link><guid>https://blog.csdn.net/EFM32/article/details/103594811</guid><author>EFM32</author><pubDate>Wed, 18 Dec 2019 11:45:43 +0800</pubDate><description><![CDATA[在嵌入式设备里，当QT界面需要切换的时候，往往需要很多动态效果。例如根据触摸，动态左右切换屏幕，或则是点一个按键，做界面淡入淡出效果等。这里会整合网络上的一些资源，做几种特效。这一篇先给一个淡入淡出的示例。

参考资料：http://serge45-blog.logdown.com/posts/208655-qt-widget-fade-effect

大神的代码完整实现了淡入淡出，但是作为初学者...]]></description><category></category></item><item><title><![CDATA[openssl AES 加解密示例]]></title><link>https://blog.csdn.net/EFM32/article/details/103205322</link><guid>https://blog.csdn.net/EFM32/article/details/103205322</guid><author>EFM32</author><pubDate>Fri, 22 Nov 2019 18:11:22 +0800</pubDate><description><![CDATA[#include &lt;unistd.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdbool.h&gt;
#include &lt;string.h&gt;
#include &lt;errno.h&gt;
#include &lt;signal.h&gt;
#include &lt;unistd.h&gt;
#include &lt;sys/w...]]></description><category></category></item><item><title><![CDATA[WS2812C IO口模拟控制]]></title><link>https://blog.csdn.net/EFM32/article/details/102942946</link><guid>https://blog.csdn.net/EFM32/article/details/102942946</guid><author>EFM32</author><pubDate>Wed, 06 Nov 2019 20:57:58 +0800</pubDate><description><![CDATA[以前，一直很疑惑，那些挂在树上的LED灯条，是如何实现流水的效果的。灯条是如此的窄，不可能放下很多的信号线，除非是串行的连接。受限于知识面，一直不太清楚为什么可以做到，也算是懒，一直没去查这方面的资料。

直到有一天，突然发现了某个村产的带锁存器的5050 LED灯珠，才恍然大悟，原来如此。

这段时间，由于要做开关面板，并且面板上需要有背光灯，于是就想起了这个神奇的5050灯珠。。于是就将其画在...]]></description><category></category></item><item><title><![CDATA[RTL8188 Linux驱动移植]]></title><link>https://blog.csdn.net/EFM32/article/details/102734367</link><guid>https://blog.csdn.net/EFM32/article/details/102734367</guid><author>EFM32</author><pubDate>Thu, 24 Oct 2019 23:27:16 +0800</pubDate><description><![CDATA[折腾了好几天，系统的Wifi总算是跑起来了。

总结下来，刚开始应该犯了好多系统性的错误。例如，以为在menuconfig中，将RTL8188对应的选项选中，就可以了，但是后来才知道事实并非如此。主要还是由单片机背景进入Linux开发，有好多不太适应的地方，也有一些思维定势的地方。这些都是需要在后面开发的过程中，需要注意的。好了，言归正传，这里主要是参考了如下的两个链接：

http://bbs....]]></description><category></category></item><item><title><![CDATA[最简单的推送提醒服务-Bark]]></title><link>https://blog.csdn.net/EFM32/article/details/97770693</link><guid>https://blog.csdn.net/EFM32/article/details/97770693</guid><author>EFM32</author><pubDate>Tue, 30 Jul 2019 13:05:27 +0800</pubDate><description><![CDATA[在某个大楼里，安装了一个实时监控的设备。但是由于这栋大楼目前还处于全面施工的状态，因此这个监控设备，不停的被施工方掐点，断网等等，状况百出，也是令人防不胜防。。于是，一直在想，有没一个很简单的方法，看获知目前这个监控设备的状态。方法倒是有，例如利用各种云平台的推送服务，但是感觉都不像是1,2天搞完的，毕竟俺不是做后台开发的人。。于是用google不停的搜索，终于发现了一个软件，叫做Bark的软件，...]]></description><category></category></item><item><title><![CDATA[STM32 USART的寄存器操作]]></title><link>https://blog.csdn.net/EFM32/article/details/94456257</link><guid>https://blog.csdn.net/EFM32/article/details/94456257</guid><author>EFM32</author><pubDate>Tue, 02 Jul 2019 17:06:12 +0800</pubDate><description><![CDATA[不晓得是不是自己用寄存器操作习惯了，总是用不习惯STM32的HAL库，效率实在是有些低。特别是用到多个串口进行高速传输的应用，就一个入口函数，然后一个一个的callback调用，效率上讲，实在是有些差。于是自己尝试了一下，在基于STM32cube的基础上（借用一下Cube生成的初始化函数，还是有必要的），改成了寄存器操作版本。这样，GPIO口的初始化，时钟的初始化之类的操作，就利用了cube。。偷...]]></description><category></category></item><item><title><![CDATA[STM32 定时器单次延时]]></title><link>https://blog.csdn.net/EFM32/article/details/94407733</link><guid>https://blog.csdn.net/EFM32/article/details/94407733</guid><author>EFM32</author><pubDate>Mon, 01 Jul 2019 21:05:10 +0800</pubDate><description><![CDATA[这几天开始准备要要利用网络上的资源，移植modbus master的library。CSDN以及Amos的论坛上都有例子。但是我想移植的例子，却是基于STM32的标准库。初略的想想，应该不算难。于是动手开始移植。但是有一个功能，却卡住了。

在Modbus里，判定帧结束，是利用时间的。这个时间，和波特率是息息相关的。一般是3.5个byte的时间。这个一般是使用一个专用的定时器来实现的。但是这个定时...]]></description><category></category></item><item><title><![CDATA[AK9528 - IS07816转UART智能读卡控制器芯片]]></title><link>https://blog.csdn.net/EFM32/article/details/93198029</link><guid>https://blog.csdn.net/EFM32/article/details/93198029</guid><author>EFM32</author><pubDate>Fri, 21 Jun 2019 15:56:05 +0800</pubDate><description><![CDATA[在这个IOT的时代，数据加密已经四处被提及了。安全性需求也日益增高。但是我们的linux主机的芯片，自身却没有带ISO7816接口。这次由于客户的需求，必须要加加密芯片，因此只能找寻类似于USB转ISO7816， UART/SPI转7816接口等芯片。搜来搜去，竟然搜到一颗AK9528，UART转7816。。因此，就拿来用了。这颗芯片的资料不多，基本参数如下：

1. 默认使用38400，8，n，...]]></description><category></category></item><item><title><![CDATA[Linux Debin开机自启动]]></title><link>https://blog.csdn.net/EFM32/article/details/90231539</link><guid>https://blog.csdn.net/EFM32/article/details/90231539</guid><author>EFM32</author><pubDate>Wed, 15 May 2019 10:52:15 +0800</pubDate><description><![CDATA[原文地址：https://www.cnblogs.com/ssooking/p/6094740.html

一.、在/etc/rc.local文件中添加自启动命令

执行命令： 编辑"/etc/rc.local"，添加你想开机运行的命令

运行程序脚本：然后在文件最后一行添加要执行程序的全路径。

例如，每次开机时要执行一个hello.sh，这个脚本放在/usr下面，那就可以在"/etc/rc.l...]]></description><category></category></item><item><title><![CDATA[Linux C语言调用shell命令]]></title><link>https://blog.csdn.net/EFM32/article/details/84943177</link><guid>https://blog.csdn.net/EFM32/article/details/84943177</guid><author>EFM32</author><pubDate>Mon, 10 Dec 2018 17:22:52 +0800</pubDate><description><![CDATA[在目前的这个项目里，整个软件分别被3三家公司所开发，我负责基于BSP的底层协议开发。调试底层接口的时候，每次reboot后，老是要先kill一遍涉及到的thread，毕竟他们会占有我要调试的资源。于是就搜索在C语言内，如何kill掉这些程序。看来看去，感觉还挺繁琐的。于是搜了搜如何调用shell脚本来杀。于是就有下面这片文章：

https://blog.csdn.net/qq_21792169/...]]></description><category></category></item><item><title><![CDATA[Linux进程间的通讯]]></title><link>https://blog.csdn.net/EFM32/article/details/82692541</link><guid>https://blog.csdn.net/EFM32/article/details/82692541</guid><author>EFM32</author><pubDate>Thu, 13 Sep 2018 18:18:42 +0800</pubDate><description><![CDATA[如下这两篇文章应该解释的很清晰了。

https://blog.csdn.net/ljianhui/article/details/10287879

https://blog.csdn.net/guoping16/article/details/6584024

自己根据以上的理解，测试的代码如下：

MsgTask1接收其他两个线程传过来的message，Msg type分别是1，2.

Ms...]]></description><category></category></item><item><title><![CDATA[Errors: Linux System Errors]]></title><link>https://blog.csdn.net/EFM32/article/details/82692502</link><guid>https://blog.csdn.net/EFM32/article/details/82692502</guid><author>EFM32</author><pubDate>Thu, 13 Sep 2018 18:12:19 +0800</pubDate><description><![CDATA[转载自：http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Errors/unix_system_errors.html

When system requests fail, error code are returned. To understand the nature of the error these...]]></description><category></category></item><item><title><![CDATA[signal 和 alarm函数]]></title><link>https://blog.csdn.net/EFM32/article/details/82382872</link><guid>https://blog.csdn.net/EFM32/article/details/82382872</guid><author>EFM32</author><pubDate>Tue, 04 Sep 2018 14:18:09 +0800</pubDate><description><![CDATA[针对一次性的动作，最简单的就是使用signal和alarm函数来调用。

假如在callback函数未执行的时候，要取消的话，那么可以使用alarm(0)来取消调用该回调函数。我们用如下的代码来测试（看输出的全局变量的值）：


#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdbool.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#includ...]]></description><category></category></item></channel></rss>