Parcourir la source

实现了脉冲的EXT信号跳转,计数值通过通信清除

master
Chiri il y a 1 mois
Parent
révision
652850ca21
8 fichiers modifiés avec 817 ajouts et 786 suppressions
  1. +1
    -0
      Core/Inc/main.h
  2. +23
    -16
      Core/Src/main.c
  3. +752
    -752
      EWARM/PLSR.dep
  4. +6
    -6
      EWARM/settings/PLSR.dbgdt
  5. +2
    -3
      EWARM/settings/PLSR.dnx
  6. +4
    -4
      EWARM/settings/Project.wsdt
  7. +15
    -0
      Hardware/modbus.c
  8. +14
    -5
      Hardware/modbus.h

+ 1
- 0
Core/Inc/main.h Voir le fichier

@@ -41,6 +41,7 @@ extern float Acc; /*
extern uint8_t PulseNum; /* 脉冲段计数 */
extern int32_t AllPulseCNT;
extern int32_t BaseCNT;
extern int32_t CNT_Only[10];

extern uint8_t EndFlag;
extern uint8_t FullFlag;


+ 23
- 16
Core/Src/main.c Voir le fichier

@@ -425,17 +425,7 @@ void PulseGetCount(void *p_arg)
{
Options.Dir = 0;
}
if (TIM2->CNT != 0)
{
if (Options.Dir == 1)
{
CNT_Only[NowPulse] = 0 - (TIM2->CNT);
}
else if (Options.Dir == 0)
{
CNT_Only[NowPulse] = TIM2->CNT;
}
}
if (TIM2->CNT != 0) CNT_Only[NowPulse] = TIM2->CNT;
AllPulseCNT = CNT_Only[0] + CNT_Only[1] + CNT_Only[2] + CNT_Only[3] +
CNT_Only[4] + CNT_Only[5] + CNT_Only[6] + CNT_Only[7] +
CNT_Only[8] + CNT_Only[9];
@@ -449,9 +439,6 @@ void PulseGetCount(void *p_arg)
* @brief 任务5,EXT
* @return 无
*/

/* 最新思路:不采用进入中断的方式,直接停止现在进行的定时器(10【产生脉冲】)
重新设置定时器2【脉冲计数】的CNT和ARR为下一个脉冲的(段切换) */
void EXTSet(void *p_arg)
{
p_arg = p_arg;
@@ -478,16 +465,32 @@ void EXTSet(void *p_arg)
while(HAL_GPIO_ReadPin(GPIOG, X5_Pin) == GPIO_PIN_SET);
}
}
if(X4_Sta == 1 && Options.EXT == 0)
/* X4引脚的EXT信号 */
if(X4_Sta == 1 && Options.EXT == 0 && PulseOutput[NowPulse].EXT == 1)
{
if (TIM2->CNT != 0) CNT_Only[NowPulse] = TIM2->CNT; /* 保存当前的脉冲计数 */
TIM2->CNT = TIM2->ARR - 1;
EXT_Flag = 1;
X4_Sta = 0;
}
if(X5_Sta == 1 && Options.EXT == 1)
else
{
X4_Sta = 0;
}
/* X5引脚的EXT信号 */
if(X5_Sta == 1 && Options.EXT == 1 && PulseOutput[NowPulse].EXT == 1)
{
if (TIM2->CNT != 0) CNT_Only[NowPulse] = TIM2->CNT; /* 保存当前的脉冲计数 */
TIM2->CNT = TIM2->ARR - 1;
EXT_Flag = 1;
X5_Sta = 0;
}
else
{
X5_Sta = 0;
}
if(EXT_Flag == 1)
{
EXT_Flag = 0;
@@ -504,6 +507,8 @@ void EXTSet(void *p_arg)
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
OSIntEnter(); /* 进入中断 */
if (htim == (&htim3))
{
if (ArrFlag == 1)
@@ -571,6 +576,8 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
在此函数内实现最后一段脉冲的减速过程。 */
}
}
OSIntExit(); /* 退出中断 */
}
/* USER CODE END 4 */



+ 752
- 752
EWARM/PLSR.dep
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 6
- 6
EWARM/settings/PLSR.dbgdt Voir le fichier

@@ -153,11 +153,11 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>CA0F00002200298100000400000013860000050000002CE1000002000000108600009B050000239200000600000029E10000040000005F860000040000000F8100000100000020810000050000000C810000100000001D810000010000005986000001000000048600000300000056860000E8020000288100000300000000840000030000002BE100000700000025E100000100000009860000010000000E810000020000001F810000E800000000E10000020000000B810000060000005886000001000000148600000B02000011860000FC020000058100000100000000860000020000004681000007010000608600000100000008860000050000005D8600001000000016860000010000000586000001000000</CommandsUsage>
<CommandsUsage>F10F00002200298100000400000013860000050000002CE100000200000010860000A6050000239200000600000029E10000040000005F860000040000000F8100000100000020810000050000000C810000100000001D810000010000005986000001000000048600000300000056860000E8020000288100000300000000840000030000002BE100000700000025E100000100000009860000010000000E810000020000001F810000EB00000000E10000020000000B81000006000000588600000100000014860000180200001186000005030000058100000100000000860000020000004681000009010000608600000100000008860000050000005D8600001100000016860000010000000586000001000000</CommandsUsage>
</MFCToolBarParameters>
<CommandManager>
<CommandsWithoutImages>300020870000238700002487000021870000198600000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400002AE10000008200001C8200000182000067860000838600005886000004DC00007784000007840000808C000044D500007486000045D5000046D5000047D5000048D5000049D500004AD500004BD500004CD500001C8F00001E8F00001F8F0000208F0000218F0000118F000000DC000001DC000002DC000003DC0000A4860000A38600005486000059860000</CommandsWithoutImages>
<MenuUserImages>5D001386000031000000048400007E0000000286000013000000578600001C000000768600003B000000108600002F00000015810000570000002CE10000750000004581000016000000848600003C00000007E100006D000000318400008500000023920000000000000D86000019000000D98600001000000004E100006B000000208100005D0000000F810000550000005F860000660000000A8600002D00000001E10000680000000D800000490000000C81000052000000078600002A00000023E100006F00000006840000800000000486000027000000198200004700000056860000350000001781000059000000038400007D00000001860000120000009A8600001A00000016820000450000004A810000790000001481000056000000008400007A0000002BE1000074000000448100000A0000008584000017000000008100004B00000030840000840000000E840000820000000C86000018000000D88600000F0000005E8600003700000003E100006A0000001F8100005C0000000E810000540000001A860000340000002F8200004800000025E1000071000000098600002C00000000E100006700000006860000290000008E8600003D00000022E100006E0000000B81000051000000148600003200000041E1000077000000D184000020000000058400007F0000000386000014000000698600003A000000188200004600000011860000300000001681000058000000028400007C0000000086000011000000558600000800000049810000780000004681000064000000108400008300000032840000860000000E8600001B000000DA86000006000000438100000B000000608600003900000005E100006C00000051840000880000000B8600002E0000005D8600003600000002E10000690000000A84000081000000C386000004000000A18600003E0000000D81000053000000088600002B0000005C840000020000000586000028000000C08600000E00000037870000030000001686000033000000</MenuUserImages>
<MenuUserImages>5D00578600001C0000000286000013000000048400007E00000013860000310000002CE10000750000001581000057000000108600002F000000768600003B000000D9860000100000000D860000190000002392000000000000318400008500000007E100006D000000848600003C00000045810000160000000A8600002D0000005F860000660000000F81000055000000208100005D00000004E100006B00000023E100006F000000078600002A0000000C810000520000000D8000004900000001E10000680000001982000047000000048600002700000006840000800000004A8100007900000016820000450000009A8600001A0000000186000012000000038400007D000000178100005900000056860000350000002BE1000074000000008400007A0000001481000056000000D88600000F0000000C860000180000000E840000820000003084000084000000008100004B0000008584000017000000448100000A000000098600002C00000025E10000710000002F820000480000001A860000340000000E810000540000001F8100005C00000003E100006A0000005E860000370000000B8100005100000022E100006E0000008E8600003D000000068600002900000000E10000670000001882000046000000698600003A0000000386000014000000058400007F000000D18400002000000041E10000770000001486000032000000498100007800000055860000080000000086000011000000028400007C00000016810000580000001186000030000000DA860000060000000E8600001B0000003284000086000000108400008300000046810000640000000B8600002E000000518400008800000005E100006C0000006086000039000000438100000B000000088600002B0000000D81000053000000A18600003E000000C3860000040000000A8400008100000002E10000690000005D8600003600000016860000330000003787000003000000C08600000E00000005860000280000005C84000002000000</MenuUserImages>
</CommandManager>
<Pane-59393>
<ID>0</ID>
@@ -1012,7 +1012,7 @@
<item>arr</item>
<item>PulseNum</item>
<item>CNT_Only</item>
<item></item>
<item />
</expressions>
<col-names>
<item>Expression</item>
@@ -1120,7 +1120,7 @@
</BasePane-34048>
<MFCToolBar-34049>
<Name>Debug</Name>
<Buttons>00200000010000000800FFFF01001100434D4643546F6F6C426172427574746F6E568600000000040035000000FFFEFF0000000000000000000000000001000000010000000180138600000000040031000000FFFEFF00000000000000000000000000010000000100000001805E8600000000040037000000FFFEFF0000000000000000000000000001000000010000000180608600000000040039000000FFFEFF00000000000000000000000000010000000100000001805D8600000000040036000000FFFEFF000000000000000000000000000100000001000000018010860000000004002F000000FFFEFF0000000000000000000000000001000000010000000180118600000000000030000000FFFEFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E148600000000040032000000FFFEFF205200650073006500740020007400680065002000640065006200750067006700650064002000700072006F006700720061006D000A00520065007300650074000000000000000000000000000100000001000000000000000000000001000000060009802087000000000000FFFFFFFFFFFEFF06530079007300740065006D000100000000000000000000000100000001000000000000000000000001000000000009802387000000000000FFFFFFFFFFFEFF0443006F00720065000100000000000000000000000100000001000000000000000000000001000000000009802487000000000000FFFFFFFFFFFEFF0853006F006600740077006100720065000100000000000000000000000100000001000000000000000000000001000000000009802187000000000000FFFFFFFFFFFEFF12480061007200640077006100720065002000720065007300650074002000700069006E000100000000000000000000000100000001000000000000000000000001000000000009800000000000000400FFFFFFFFFFFEFF000000000000000000000000000100000001000000000000000000000001000000000009801986000000000000FFFFFFFFFFFEFF000100000000000000000000000100000001000000000000000000000001000000000000000000FFFEFF0544006500620075006700C6000000</Buttons>
<Buttons>00200000010000000800FFFF01001100434D4643546F6F6C426172427574746F6E568600000000000035000000FFFEFF0000000000000000000000000001000000010000000180138600000000000031000000FFFEFF00000000000000000000000000010000000100000001805E8600000000000037000000FFFEFF0000000000000000000000000001000000010000000180608600000000000039000000FFFEFF00000000000000000000000000010000000100000001805D8600000000000036000000FFFEFF000000000000000000000000000100000001000000018010860000000000002F000000FFFEFF0000000000000000000000000001000000010000000180118600000000040030000000FFFEFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E148600000000000032000000FFFEFF205200650073006500740020007400680065002000640065006200750067006700650064002000700072006F006700720061006D000A00520065007300650074000000000000000000000000000100000001000000000000000000000001000000060009802087000000000000FFFFFFFFFFFEFF06530079007300740065006D000100000000000000000000000100000001000000000000000000000001000000000009802387000000000000FFFFFFFFFFFEFF0443006F00720065000100000000000000000000000100000001000000000000000000000001000000000009802487000000000000FFFFFFFFFFFEFF0853006F006600740077006100720065000100000000000000000000000100000001000000000000000000000001000000000009802187000000000000FFFFFFFFFFFEFF12480061007200640077006100720065002000720065007300650074002000700069006E000100000000000000000000000100000001000000000000000000000001000000000009800000000000000400FFFFFFFFFFFEFF000000000000000000000000000100000001000000000000000000000001000000000009801986000000000000FFFFFFFFFFFEFF000100000000000000000000000100000001000000000000000000000001000000000000000000FFFEFF0544006500620075006700C6000000</Buttons>
</MFCToolBar-34049>
<Pane-34049>
<ID>34049</ID>
@@ -1137,7 +1137,7 @@
</BasePane-34049>
<MFCToolBar-34050>
<Name>Trace</Name>
<Buttons>00200000010000000200FFFF01001100434D4643546F6F6C426172427574746F6E53920000000004008A000000FFFEFF03450054004D0000000000000000000000000001000000010000000180549200000000000025000000FFFEFF03530057004F00000000000000000000000000010000000100000000000000FFFEFF05540072006100630065002F000000</Buttons>
<Buttons>00200000010000000200FFFF01001100434D4643546F6F6C426172427574746F6E539200000000040089000000FFFEFF03450054004D0000000000000000000000000001000000010000000180549200000000000025000000FFFEFF03530057004F00000000000000000000000000010000000100000000000000FFFEFF05540072006100630065002F000000</Buttons>
</MFCToolBar-34050>
<Pane-34050>
<ID>34050</ID>
@@ -1154,7 +1154,7 @@
</BasePane-34050>
<MFCToolBar-34051>
<Name>Main</Name>
<Buttons>00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000067000000FFFEFF000000000000000000000000000100000001000000018001E100000000000068000000FFFEFF000000000000000000000000000100000001000000018003E10000000000006A000000FFFEFF000000000000000000000000000100000001000000018000810000000000004B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006D000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004006F000000FFFEFF000000000000000000000000000100000001000000018022E10000000004006E000000FFFEFF000000000000000000000000000100000001000000018025E100000000000071000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000000074000000FFFEFF00000000000000000000000000010000000100000001802CE100000000000075000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0000000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004005E000000FFFEFF000000000000000000000000000100000001000000018024E100000000000070000000FFFEFF000000000000000000000000000100000001000000018028E100000000040072000000FFFEFF000000000000000000000000000100000001000000018029E100000000000073000000FFFEFF000000000000000000000000000100000001000000018002810000000000004D000000FFFEFF0000000000000000000000000001000000010000000180298100000000000062000000FFFEFF0000000000000000000000000001000000010000000180278100000000000060000000FFFEFF0000000000000000000000000001000000010000000180288100000000000061000000FFFEFF00000000000000000000000000010000000100000001801D810000000004005A000000FFFEFF00000000000000000000000000010000000100000001801E810000000004005B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000051000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000052000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000066000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F810000000000005C000000FFFEFF000000000000000000000000000100000001000000018020810000000000005D000000FFFEFF0000000000000000000000000001000000010000000180468100000000020064000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000</Buttons>
<Buttons>00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000067000000FFFEFF000000000000000000000000000100000001000000018001E100000000000068000000FFFEFF000000000000000000000000000100000001000000018003E10000000000006A000000FFFEFF000000000000000000000000000100000001000000018000810000000000004B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006D000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004006F000000FFFEFF000000000000000000000000000100000001000000018022E10000000004006E000000FFFEFF000000000000000000000000000100000001000000018025E100000000000071000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000000074000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040075000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004005E000000FFFEFF000000000000000000000000000100000001000000018024E100000000000070000000FFFEFF000000000000000000000000000100000001000000018028E100000000040072000000FFFEFF000000000000000000000000000100000001000000018029E100000000000073000000FFFEFF000000000000000000000000000100000001000000018002810000000000004D000000FFFEFF0000000000000000000000000001000000010000000180298100000000000062000000FFFEFF0000000000000000000000000001000000010000000180278100000000000060000000FFFEFF0000000000000000000000000001000000010000000180288100000000000061000000FFFEFF00000000000000000000000000010000000100000001801D810000000004005A000000FFFEFF00000000000000000000000000010000000100000001801E810000000004005B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000051000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000052000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000066000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F810000000000005C000000FFFEFF000000000000000000000000000100000001000000018020810000000000005D000000FFFEFF0000000000000000000000000001000000010000000180468100000000020064000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000</Buttons>
</MFCToolBar-34051>
<Pane-34051>
<ID>34051</ID>


+ 2
- 3
EWARM/settings/PLSR.dnx Voir le fichier

@@ -20,7 +20,7 @@
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
</StLinkDriver>
<DebugChecksum>
<Checksum>1211547681</Checksum>
<Checksum>223229180</Checksum>
</DebugChecksum>
<Exceptions>
<StopOnUncaught>_ 0</StopOnUncaught>
@@ -152,8 +152,7 @@
<mode>0</mode>
</DisassembleMode>
<Breakpoints2>
<Bp0>_ 1 "EMUL_CODE" "{$PROJ_DIR$\..\Core\Src\stm32f4xx_it.c}.226.2" 0 0 1 "" 0 "" 0</Bp0>
<Count>1</Count>
<Count>0</Count>
</Breakpoints2>
<Aliases>
<A0>_ "C:\Users\Chiri\Desktop\PLSR\cmsis\uC-CPU\ARM-Cortex-M4\IAR\cpu_a.asm" "C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\cmsis\uC-CPU\ARM-Cortex-M4\IAR\cpu_a.asm"</A0>


+ 4
- 4
EWARM/settings/Project.wsdt
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 15
- 0
Hardware/modbus.c Voir le fichier

@@ -94,6 +94,7 @@ void ProcessModbusFrame(uint8_t buffer[], uint16_t longth)
;break;
case WRITE_ONLY_REGISTER: WriteOnlyRegister(buffer, longth)
;break;
case PLSR_COUNT_CLEAR: PLSRCountClear();
default :ErrorBack(buffer, longth); /* 无效指令码 */
;break;
@@ -692,6 +693,20 @@ void GetHistory(uint8_t buffer[], uint16_t longth)
}
}

/**
* @brief 0x39指令码的执行,输出历史
* @param[in] buffer[] 预处理的数据
* @param[in] longth 数据的长度
* @return 无
*/
void PLSRCountClear(void)
{
for(int i = 0; i < 10; i ++)
{
CNT_Only[i] = 0;
}
}

/**
* @brief 读取并还原sram数据。
* @return 无


+ 14
- 5
Hardware/modbus.h Voir le fichier

@@ -20,29 +20,38 @@
#define GET_HISTORY_CODE 0x55
#define READ_ODD_REGUSTER_CODE 0x33
#define WRITE_ONLY_REGISTER 0x06
#define PLSR_COUNT_CLEAR 0x39

#define SLAVES_ADDRES 0x01


/* 函数声明 */
//基础Modbus
void ErrorBack(uint8_t buffer[], uint16_t longth);
void ProcessModbusFrame(uint8_t buffer[], uint16_t longth);
void ReadCoilProcess (uint8_t buffer[], uint16_t longth);
void WriteCoilProcess(uint8_t buffer[], uint16_t longth);
void WriteMulCoilProcess(uint8_t buffer[], uint16_t longth);
void ReadRegisterProcess(uint8_t buffer[], uint16_t longth);
void WriteMulRegisterProcess(uint8_t buffer[], uint16_t longth);
void WriteCoilProcess(uint8_t buffer[], uint16_t longth);
void ReadOddRegisterProcess(uint8_t buffer[], uint16_t longth);
void ReadEXRegisterProcess(uint8_t buffer[], uint16_t longth);
void WriteEXRegisterProcess(uint8_t buffer[], uint16_t longth);
void WriteOnlyRegister(uint8_t buffer[], uint16_t longth);
void WriteMulRegisterProcess(uint8_t buffer[], uint16_t longth);


//附加Modbus
void SaveHistory(uint8_t buffer[], uint16_t longth);
void LoadHistory(void);
void GetHistory(uint8_t buffer[], uint16_t longth);
void ReadOddRegisterProcess(uint8_t buffer[], uint16_t longth);
void ReadEXRegisterProcess(uint8_t buffer[], uint16_t longth);
void WriteEXRegisterProcess(uint8_t buffer[], uint16_t longth);

//掉电保持
void ModbusLoadSRAM(void);
void ModbusSaveSRAM(void);

//PLSR
void PLSRCountClear(void);

/* 变量定义 */
extern uint8_t History[3][512]; /*存放历史的地方*/
extern uint8_t HistoryLongth[3];/*历史数据大小的计数*/


Chargement…
Annuler
Enregistrer