胖纸带你嘿嘿嘿

一个搞嵌入式开发的胖纸

BUG记录:sscanf()函数导致内存溢出,造成其他变量被改变

问题代码:

typedef union
{
	uint16_t Value16;
	uint8_t  Value8[2];
}PULSE;
PULSE MaxPowerOpt;
static char cSetValue[]="00.00";
sscanf(cSetValue,"%d",(int *)&MaxPowerOpt.Value16);

问题描述:

本来是希望通过sscanf()函数将字符串cSetValue转为无符号整数给MaxPowerOpt.Value16,但是发现每一次转换完成后,有一个变量(MutexSemaphore)的值都会被莫名其妙的修改为0,而且根据.map文件,这个被莫名其妙修改的变量(MutexSemaphore)被分配的地址刚好是在MaxPowerOpt的后面。

未命名1563433804.png


C语言循环队列的实现与验证

//循环队列的结构体类型定义
typedef int DataType;
typedef struct
{
	DataType Data[QueueMaxLength];
	int      TailOffset;//数组数据中最新加入数据的下标
	int      DataLength;//数组数据中加入数据的总量,加入后取出的不算
}QUEUE;

//函数声明
QUEUE *  CreateQueue(void);
void     SetQueueNull(QUEUE * Queue);
void     InQueue(QUEUE * Queue , DataType Data);
DataType OutQueue(QUEUE * Queue);


ADC转换—10种软件滤波技术分享

1,限幅滤波法(又称程序判断滤波法) 

2、中位值滤波法

3、算术平均滤波法

4、递推平均滤波法(又称滑动平均滤波法)

5、中位值平均滤波法(又称防脉冲干扰平均滤波法)......

STM32F429基于HAL库实现通用定时器3的编码器接口(Encoder Mode)模式

编码器型号:62SY22D11-3(品牌:HUAVEI.CN)

ARM IC:STM32F429IGT6

一、编码器建议电路图

微信截图_20181220160545.png

需要注意的是,编码器的AB两个接口需要2.2K的上拉电阻。

详细代码如下所示。

STM32 DMA flag definitions 的含义

所谓的“DMA flag definitions”也就是对应着寄存器,比如“DMA_FLAG_TCIF3_7”就代表着“DMA_LISR”中“TCIF7”的数据流传输完成标志位(即数据流7的传输完成标志位),至于“3”,代表着通道“4”,3代表4是因为是从0开始计数表示。

1:1三相隔离变压器替代解决方案

在实际应用环境当中,当需要使用到一款国外产的1:1三相隔离变压器的时候,如果去联系厂家定制,定制成本大概是在大几千元到几万元之间,取决于变压器制作厂商及其材料供应商,这个时候,不使用隔离变压器,又丢失了隔离性,所以,这个时候可以选择我们的替代解决方案,由原来的隔离变压后整流,变成整流后再隔离变压。

SMD贴片元件的封装尺寸

【SMD贴片元件的封装尺寸】公制:3216——2012——1608——1005——0603——0402英制:1206——0805——0603——0402——0201——01005注意:0603有公制,英制的区分公制0603的英制是英制0201,英制0603的公制是公制1608还要注意1005与01005的区分,1005也有公制,英制的区分英制1005的公制是公制2512公制1005的英制是英制0402像在ProtelDXP(Protel2004)及以后版本中已经有SMD贴片元件的封装库了。

按键扫描连续与不连续方案

int key_scanf(int mode)//mode=1为连续,0为不连续
{
static int sta=1;//定义全局静态变量,不会因重复进入函数,导致值被复位,能同文件内全局调用,但是又能避免和其他文件出现同变量名的冲突。
if(mode==1)sta=1;
if(sta&&(key1==0||key2==0||key3==0))//按键扫描
{
delay_ms(10);
sta=0;
if(key1==0)return 1;
else if(key2==0)return 2;
else if(key3==0)return 3;
}
else if(key1==0&&key2==0&&key3==0)sta=1;//直到按键被松开,才开启下一次按键扫描
return 0;
}

AGND和DGND的秘密 混合信号器件的接地原则

对于所有模拟设计而言,接地都是一个不容忽视的问题,而在基于 PCB的电路中,适当实施接地也具有同等重要的意义。数字和模拟设计工程师倾向于从不同角度考察混合信号器件, 本期为大家介绍一个适用于大多数混合信号器件的一般接地原则。

emWin及StemWin使用中关于菜单栏的应用与问题

前言:在我看来,emWin和StemWin就是基本相同的库文件,关于这个库文件的移植,网络上有很多教材,比如“ALIENTEK emWin开发手册”,他们家提供了各种STM32系列的开发手册,我这里记录的是关于使用“窗口对象(小工具)”中的“MENU(菜单)”这类小工具在应用过程中,遇到的问题进行记录,并且提出我的解决方案。

emWin及StemWin使用中关于菜单栏的应用与问题


Powered By itdoy

Copyright itdoy . All Rights Reserved.备案号:琼ICP备15000663号