⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qtimer.h

📁 MC56F802BLDC 可以使用的算法 就是电机启动有点慢
💻 H
📖 第 1 页 / 共 2 页
字号:

/* Input and Output polarity select (used in QT_INPUT_POLARITY command) */
#define	QT_NORMAL_POLARITY				false
#define	QT_INVERTED_POLARITY			true

/* Input Capture Mode (used in QT_SET_CAPTURE_MODE command) */
#define QT_CAPTURE_DISABLED				0	/*0x0000*/
#define QT_RISING_EDGE					1	/*0x0040*/
#define QT_FALLING_EDGE					2	/*0x0080*/
#define QT_BOTH_EDGES					3	/*0x00C0*/

/* enable/disable */
#define	QT_DISABLE						false
#define	QT_ENABLE						true



/*******************************************************************************
	Register bits
*******************************************************************************/
/* CONTROL REGISTER */
#define QT_COUNT_ONCE_BIT				0x0040
#define QT_COUNT_LENGTH_BIT				0x0020
#define QT_COUNT_DIRECTION_BIT			0x0010
#define QT_CO_INIT_BIT					0x0008
/* STATUS CONTROL REGISTER*/
#define QT_INPUT_POLARITY_BIT			0x0200
#define QT_EXT_INPUT_PIN				0x0100
#define QT_MASTER_MODE_BIT				0x0020
#define QT_ENABLE_OFLAG_FORCE_BIT		0x0010
#define QT_OFLAG_VALUE_BIT				0x0008
#define QT_FORCE_OFLAG_BIT				0x0004
#define QT_OUTPUT_POLARITY_BIT			0x0002
#define QT_OUTPUT_ENABLE_BIT			0x0001



/* Function prototypes */
void qtInit(arch_sTimerChannel *pTimerBase);




/*******************************************************************************
	Implementations of Quad Timer ioctl() commands
*******************************************************************************/
#define ioctlQT_INIT(pTimerBase,param)	qtInit((arch_sTimerChannel *) pTimerBase)


/* Control Register */
#define ioctlQT_SET_COUNT_MODE(pTimerBase, param) \
	{ periphBitClear(0xE000, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg)); \
	  periphBitSet(param << 13, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg)); }

#define ioctlQT_SET_PRIMARY_SOURCE(pTimerBase,param) \
	{ periphBitClear(0x1E00, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg)); \
	  periphBitSet(param << 9, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg)); }

#define ioctlQT_SET_SECONDARY_SOURCE(pTimerBase,param) \
	{ periphBitClear(0x0180, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg)); \
	  periphBitSet(param << 7, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg)); }

#define ioctlQT_SET_COUNT_ONCE(pTimerBase, param) \
	if (param) {periphBitSet(QT_COUNT_ONCE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg));} \
	else		 {periphBitClear(QT_COUNT_ONCE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg));}
				
#define ioctlQT_SET_COUNT_LENGTH(pTimerBase, param) \
	if (param) {periphBitSet(QT_COUNT_LENGTH_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg));} \
	else		 {periphBitClear(QT_COUNT_LENGTH_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg));}

#define ioctlQT_SET_COUNT_DIRECTION(pTimerBase, param) \
	if (param) {periphBitSet(QT_COUNT_DIRECTION_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg));} \
	else		 {periphBitClear(QT_COUNT_DIRECTION_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg));}

#define ioctlQT_CO_CHANNEL_INIT(pTimerBase, param) \
	if (param) {periphBitSet(QT_CO_INIT_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg));} \
	else		 {periphBitClear(QT_CO_INIT_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg));}

#define ioctlQT_SET_OUTPUT_MODE(pTimerBase,param) \
	{ periphBitClear(0x0007, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg)); \
	  periphBitSet(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg)); }


/* Status and Control Register */
#define ioctlQT_SET_FLAG(pTimerBase,param) \
	periphBitSet(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_CLEAR_FLAG(pTimerBase,param) \
	periphBitClear(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_READ_FLAG(pTimerBase,param) \
	periphBitTest(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_ENABLE_INT(pTimerBase,param) \
	periphBitSet(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_DISABLE_INT(pTimerBase,param) \
	periphBitClear(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_SET_INPUT_POLARITY(pTimerBase, param) \
	if (param) {periphBitSet(QT_INPUT_POLARITY_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));} \
	else		 {periphBitClear(QT_INPUT_POLARITY_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));}

#define ioctlQT_READ_EXT_INPUT_PIN(pTimerBase,param) \
	periphBitTest(QT_EXT_INPUT_PIN, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_SET_CAPTURE_MODE(pTimerBase, param)	\
	{ periphBitClear(0x00C0, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg)); \
	  periphBitSet(param << 6, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg)); }

#define ioctlQT_MASTER_MODE(pTimerBase, param) \
	if (param) {periphBitSet(QT_MASTER_MODE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));} \
	else		 {periphBitClear(QT_MASTER_MODE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));}

#define ioctlQT_EXT_OFLAG_FORCE(pTimerBase, param) \
	if (param) {periphBitSet(QT_ENABLE_OFLAG_FORCE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));} \
	else		 {periphBitClear(QT_ENABLE_OFLAG_FORCE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));}

#define ioctlQT_FORCE_OFLAG(pTimerBase, param) \
    if(param)	{periphBitSet(QT_OFLAG_VALUE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg)); } \
    else		{periphBitClear(QT_OFLAG_VALUE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg)); } \
    periphBitSet(QT_FORCE_OFLAG_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_SET_OUTPUT_POLARITY(pTimerBase, param) \
	if (param) {periphBitSet(QT_OUTPUT_POLARITY_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));} \
	else		 {periphBitClear(QT_OUTPUT_POLARITY_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));}

#define ioctlQT_OUTPUT_ON_EXT_PIN(pTimerBase, param) \
	if (param) {periphBitSet(QT_OUTPUT_ENABLE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));} \
	else		 {periphBitClear(QT_OUTPUT_ENABLE_BIT, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg));}



/* Reading(writing) from(to) registers */
#define ioctlQT_WRITE_CONTROL_REG(pTimerBase,param) \
	periphMemWrite(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg))

#define ioctlQT_WRITE_STATUS_CONTROL_REG(pTimerBase,param) \
	periphMemWrite(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_WRITE_COMPARE_REG1(pTimerBase,param) \
	periphMemWrite(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->CompareReg1))

#define ioctlQT_WRITE_COMPARE_REG2(pTimerBase,param) \
	periphMemWrite(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->CompareReg2))

#define ioctlQT_WRITE_LOAD_REG(pTimerBase,param) \
	periphMemWrite(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->LoadReg))

#define ioctlQT_WRITE_COUNTER_REG(pTimerBase,param) \
	periphMemWrite(param, (UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->CounterReg))


#define ioctlQT_READ_CONTROL_REG(pTimerBase,param) \
	periphMemRead((UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->ControlReg))

#define ioctlQT_READ_STATUS_CONTROL_REG(pTimerBase,param) \
	periphMemRead((UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->StatusControlReg))

#define ioctlQT_READ_COMPARE_REG1(pTimerBase,param) \
	periphMemRead((UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->CompareReg1))

#define ioctlQT_READ_COMPARE_REG2(pTimerBase,param) \
	periphMemRead((UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->CompareReg2))

#define ioctlQT_READ_LOAD_REG(pTimerBase,param) \
	periphMemRead((UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->LoadReg))

#define ioctlQT_READ_COUNTER_REG(pTimerBase,param) \
	periphMemRead((UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->CounterReg))

#define ioctlQT_READ_CAPTURE_REG(pTimerBase,param) \
	periphMemRead((UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->CaptureReg))

#define ioctlQT_READ_HOLD_REG(pTimerBase,param) \
	periphMemRead((UWord16 *)(&((arch_sTimerChannel*)pTimerBase)->HoldReg))




/**********************************************************************
* Include of device specific QTIMER commands and defines
***********************************************************************/
#include "qtimertarget.h"  /* device specific defines */


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -