判断一个控制波形正不正确,可以在该处理函数里面添加一个方波,通过观察方波情形判断该处理是否正确;
软件模拟硬件触发条件,便于判断软件代码是否OK;
0423(记录吹风机项目)
过零检测点是输入检测,不需要开上拉。开上拉会导致初始就有一个电平,影响波形。捕捉不到正确的上升下降,对发热丝的处理就会出现偏差。需要看芯片引脚相关知识,下次不能再犯类似错误。引脚初始化是基础,要做到清楚知道自己的控制会起到什么作用。
移植代码:
不同平台芯片的底层封装会导致上层些许不同。例如最常用的uint,有的芯片支持库里面直接定义了typedef unsigned char uchar,故移植代码的时候记得查看一下底层封装;
有的因为编译平台不同,同一个写法,32的keil5通过,51的keil4并不通过。例如联合体中放结构体
32写法:
typedef union _DRV_FAULTS_OBJ // Faults State
{
uint32_t AllFaults;
struct
{
uint16_t IMM_Faults;
uint8_t OverTemp;
uint8_t UR_Break;
};
} DRV_FAULTS_OBJ;
extern DRV_FAULTS_OBJ SystFaults;
51写法:
typedef union _DRV_FAULTS_OBJ
{
ulong AllFaults;
struct
{
uint IMM_Faults;
uchar OverTemp;
uchar UR_Break;
}Add;
} DRV_FAULTS_OBJ;
extern DRV_FAULTS_OBJ SystFaults;
32中能通过的写法,51中并不能通过。这时候换写法就好,能实现预期功能就行。
有时提示的错误会是奇奇怪怪的,这时候一点点屏蔽一点点放出来确定问题大致区域就行。