包括mpc5643l的工程代码
单片机源程序如下:
- /*************************************************************************
- 【平 台】MPC5643L
- 【编 写】
- 【版 本】V1.0
- 【时 间】
- 【功 能】1.通过8PIN拨码开关输入阈值转速值("BM_INPUT.h");
- 2.初始化系统,包括看门狗、系统时钟、外设时钟、中断初始化(MPC5643L_SysCtrl.h")
- 3.gpio输出电平控制led,报警和停机"TASK_LED.h"
- 4.脉冲输出功能"OPWM.h"
- 5,转速输入测频率,计算转速,比较大小"TIMER_ECT.h"
- 6,超速测试按键输入函数Key_OVERSPEED.h
- *************************************************************************/
- /*******************头文件******************/
- #include "MPC5643L.h"
- #include "MPC5643L_SysCtrl.h" //系统控制函数
- #include "TASK_LED.h" //GPIO输出
- #include "Etimer_OutputPulseWidth.h" //脉冲输出
-
- #include "Key_OverspeedTest.h" //超速测试复位键扫描
- #include "TIMER_ECT.h"
- #include "FLEXCAN.h"
- #include "frequecythershord_input.h" //拨码开关输入函数
- #include "config_output.h" //GPIO输出
- /****************全局变量定义**************/
- uint8_t compare(uint8_t num1,uint8_t num2)
- {
- if(num1 < (uint8_t)(num2/2))
- {
- // init_OUTPUT(7,0);
- return 1;
-
- }
-
- else if(num1 > num2)
- {
- // init_OUTPUT(7,0);
- return 0;
-
- }
-
- else
- {
- // init_OUTPUT(7,0);
- return 2;
- }
- }
- uint16_t main(void)
- {
- uint8_t Result; //拨码开关输入pin配置
- float temp_bm; //频率阈值定义
- uint8_t Flag_HalfSpeedWSE; //半速不停机测试标志位
- uint8_t Flag_HalfSpeedSE; //半速停机测试标志位
- uint8_t Flag_OverSpeedWSE; //超速不停机测试标志位
- uint8_t Flag_OverSpeedSE; //超速停机测试标志位
- InitSysCtrl(); //初始化系统时钟,中断,看门狗,外设时钟
-
- init_OUTPUT(7,1);
- // init_OUTPUT(7,0); //上电LED灯亮
- init_OUTPUT(81,1); //LED_green正常
- init_OUTPUT(73,1); //LED_red 超速报警
-
- init_OUTPUT(2,0); //脉冲输出,开始输出低电平
-
- init_OUTPUT(128,1); //out1
- init_OUTPUT(125,1); //out2
- init_OUTPUT(124,1); //csbh_bf_out
- init_OUTPUT(121,1); //out3
- init_OUTPUT(119,1); //out5
- init_OUTPUT(117,1); //out6
- Init_BM_COFIG(); //拨码开关输入配置
- InitEtimer1_3();
-
- INTC_InstallINTCInterruptHandler(ISRICEimer, Source_Etimer1_3, Priority);
-
- Init_opweTimer0();
-
- INTC_InstallINTCInterruptHandler(eTimer_OPWisr, Source_Etimer0_0, Priority);
-
- INTC.CPR_PRC0.R = 0; //定义优先级
- InitCan1();
-
- InitCan0();
- INTC_InstallINTCInterruptHandler(RecieveMsg,Source_Flexcan,Priority); //开启CAN_1接收中断
- ETIMER_1.CHANNEL[3].CCCTRL.B.ARM = 1; //开始捕捉
-
- while(1)
- {
- float bj = 78;
-
- InputCaptureChannel3_FREQHandler(); //转速处理函数
- temp_bm = threshold_value();
-
- TransmitMsg();
- /*频率比较,控制柴油机及报警功能*/
-
- temp_bm = threshold_value();
-
- Result = compare(bj,temp_bm);
-
- /*测试按键输入功能*/
- Skan_OverspeedPB1Key(); //扫描超速测试按键,进行超速测试
-
- Flag_OverSpeedWSE = OverspeedSystemTest_WithStopEngi(); //超速测试不停机标志
- Flag_OverSpeedSE = OverspeedSystemTest_EngineStopeed(); //超速停机测试标志
- Flag_HalfSpeedWSE = HalfSpeedTest_WithoutStoppingEngineKeep(); //半速不停机测试标志
- Flag_HalfSpeedSE = HalfSpeedTest_EngineStopeed();
- // Skan_Key(); //扫描超速测试按键
- // csfw_test(); //超速复位测试程序
- // csbtj_test(); //超速不停机测试程序
- // bsbtj_test(); //半速不停机测试程序
- // bstj_test(); //半速停机测试程序
- switch(Result)
- {
- case 1:
- if(Flag_OverSpeedWSE) // self-checking:超速测试不停机
- {
- SwitchOverspeedOut_WithoutStoppingEngine(); //不停机测试程序
-
- }
-
- if(Flag_OverSpeedSE) // self-checking:超速测试停机
- {
- SwitchOverspeedOut_EngineStopeed(); //停机测试程序
-
-
- }
-
-
- PressAfterFaultTest_Reset(); //超速保护复位测试,停机报警复位函数
- //复位故障检测函
-
- if((Flag_OverSpeedWSE | Flag_OverSpeedSE | Flag_HalfSpeedWSE |Flag_HalfSpeedSE) == 0) //无超速测试按键按下
- {
- SwitchOverspeedOut_EngineStopeed(); //停机测试程序
-
- }
-
- break;
-
- case 0:
- if(Flag_HalfSpeedWSE) //self-checking:测试不停机
- {
- SwitchOverspeedOut_WithoutStoppingEngine(); //不停机测试程序
- // Inspection_WithStopEngi(); //不停机测试故障检测函数
- }
-
-
- if(Flag_HalfSpeedSE) //self-checking:测试停机
- {
- SwitchOverspeedOut_EngineStopeed(); //停机测试程序
- // Inspection_StopEngi(); //停机测试故障检测函数
- }
-
- PressAfterFaultTest_Reset(); //超速保护复位测试,停机报警复位函数
-
- if((Flag_OverSpeedWSE | Flag_OverSpeedSE | Flag_HalfSpeedWSE |Flag_HalfSpeedSE) == 0) //无超速测按键按下
- {
- SwitchOverspeedOut_EngineStopeed(); //停机测试程序
- // Inspection_StopEngi(); //停机测试故障检测函数
- }
-
- break; //停机测试程序
-
- case 2:
- SystemInWorking0rder(); //正常运行
- break;
-
- }
-
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
mpc5643l_test.zip
(275.48 KB, 下载次数: 15)
|