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

📄 main.c

📁 用C语言写的用于微新公司数字信号控制器30F6014的
💻 C
字号:
/********************************************************************** 
 *	程序说明
 *  
 *  该程序是BLDC控制主程序。在主程序中调用设置子程序,初始化系统变量和常数
 *	,使能中断,然后进入主循环。在主循环中清看门狗WDT,运行中等事件(10msec)
 *	和慢速事件(100msec)处理程序。
 **********************************************************************/
#include "general.h"
#include "hardware.h"
#include "defs.h"
#include "extern_globals.h"

/*********************************************************************/

extern void setup_ports(void);
extern void setup_motor_pwms(void);
extern void setup_adc(void);
extern void setup_qei(void);
extern void setup_timers(void);

#ifdef DEVELOPMODE
extern void setup_uart(void);
extern void serial_handler(void);
extern void process_parameters(void);
#endif

extern void medium_event_handler(void);
extern void slow_event_handler(void);


int main()
{
	unsigned char i;
	

	run_state=INITIALIZING;
	//设置外围设备
	setup_ports();
	setup_motor_pwms();//在setup_motor_pwms()写数到寄存器时,中断不能运行
	setup_adc();
	setup_qei();
	setup_timers();
	setup_uart();

	IFS2bits.FLTAIF=0;  //清故障A 输入中断标志状态位

	//使能所有类型的数学错误陷阱
	INTCON1bits.OVATE=TRUE;
	INTCON1bits.OVBTE=TRUE;
	INTCON1bits.COVTE=TRUE;
	// 使故障A 输入中断优先级为最高7,其他为缺省值4
	IPC10bits.FLTAIP=7;
	// 使能PWM,故障A和A/D 转换完成中断,在这里没有使能
	// T1(用于输出比较)和T2(用于捕捉过零事件)中断
	IEC2bits.PWMIE = 1;
	IEC2bits.FLTAIE= 1;
	IEC0bits.ADIE = 1;
	// 设定ACQUIRE2标志,捕捉三相电压并对偏移作校正
	control_flags.ACQUIRE2=TRUE;
	// 清ACQUIRE2标志
	control_flags.ACQUIRE2=FALSE;
	//计算相关的变量	
	for (i=0;i<NO_PARAMETERS;i++)
	{
		param=i;
		process_parameters();
	}
	// 设定参数使其回到菜单起始处
	param=0;
	// 主循环
	while(1)
	{
		ClrWdt();
		medium_event_handler();								
		slow_event_handler();
#ifdef DEVELOPMODE
		if (run_state == STANDBY)
			serial_handler();
#endif

	}	
}


⌨️ 快捷键说明

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