From 4fc6228ab97fa3992a65d24a2b7db4de1a39adcc Mon Sep 17 00:00:00 2001
From: Kaiser <706598421@qq.com>
Date: Tue, 17 Mar 2026 10:35:31 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E6=AD=A3=E5=B8=B8=E5=AE=9E=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Core/Inc/FreeRTOSConfig.h | 2 +-
Core/Src/APPDEF.H | 58 +++-
Core/Src/StepMotor.c | 246 ++++++++--------
Core/Src/TIM.c | 143 ++++++----
Core/Src/main.c | 526 +++++++++++++++++++++++++++++------
Core/Src/stm32f1xx_hal_msp.c | 312 ++++++++++++++++++---
Core/Src/stm32f1xx_it.c | 83 ++++--
MDK-ARM/YouSuan.uvoptx | 388 ++++++++++++++++++++++----
MDK-ARM/YouSuan.uvprojx | 162 ++++++++++-
9 files changed, 1503 insertions(+), 417 deletions(-)
diff --git a/Core/Inc/FreeRTOSConfig.h b/Core/Inc/FreeRTOSConfig.h
index 10f8503..0233494 100644
--- a/Core/Inc/FreeRTOSConfig.h
+++ b/Core/Inc/FreeRTOSConfig.h
@@ -64,7 +64,7 @@
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 56 )
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
-#define configTOTAL_HEAP_SIZE ((size_t)5120)
+#define configTOTAL_HEAP_SIZE ((size_t)7680)
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
diff --git a/Core/Src/APPDEF.H b/Core/Src/APPDEF.H
index 546cc35..44615c2 100644
--- a/Core/Src/APPDEF.H
+++ b/Core/Src/APPDEF.H
@@ -4,22 +4,53 @@
//extern void delay_us(uint32_t us);
#include "stdlib.h"
#include "math.h"
+#include "stdio.h"
+#include "string.h "
//#include "MBM.H"
+
+//#define DebugLog
+#ifdef DebugLog
+#define Debuglog(format, ...) \
+ printf("[%s:%d->%s] " format"\r\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__)
+#else
+#define Debuglog(format, ...)
+#endif
+#define VOFA
+#ifdef VOFA
+#define pfp(format, ...) \
+ printf(format, ##__VA_ARGS__)
+#else
+#define pfp(info)
+#endif
+
+#define Typestr(format, ...) \
+ sprintf(StateString,format"/0", ##__VA_ARGS__ );
+
+extern char StateString[40];
+
+extern osSemaphoreId ArmRunFinish;
+extern osSemaphoreId SampleRunFinish;
+
extern void MAX6675_Init(void);
extern void BIOS_GPIO_Init( void );
extern void BIOS_TIM8_Init( void );
extern void BIOS_TIM5_Init( void );
extern void USARTHMIInit( void );
-extern void TIM4_CH1_CTRL(uint16_t ARRValue, uint16_t CCRValue );
-extern void TIM4_CH1_CMD( _Bool CMD );
-extern void TIM4_CH1_DIR( _Bool CMD );
-extern void TIM4_IECMD( _Bool CMD );
-extern void TIM3_CH2_CTRL(uint16_t ARRValue, uint16_t CCRValue );
-extern void TIM3_CH2_CMD( _Bool CMD );
-extern void TIM3_CH2_DIR( _Bool CMD );
+extern void TIM3_CH1_CTRL(uint16_t ARRValue, uint16_t CCRValue );
+extern void TIM3_CH1_CMD( _Bool CMD );
+extern void TIM3_CH1_DIR( _Bool CMD );
extern void TIM3_IECMD( _Bool CMD );
+extern void TIM2_CH2_CTRL(uint16_t ARRValue, uint16_t CCRValue );
+extern void TIM2_CH2_CMD( _Bool CMD );
+extern void TIM2_CH2_DIR( _Bool CMD );
+extern void TIM2_IECMD( _Bool CMD );
+
+extern void TIM5_CH3_CTRL(uint16_t ARRValue, uint16_t CCRValue );
+extern void TIM5_CH3_CMD( _Bool CMD );
+extern void TIM5_CH3_DIR( _Bool CMD );
+extern void TIM5_IECMD( _Bool CMD );
enum enumPumpSelect
@@ -35,13 +66,24 @@ enum enumPumpSelect
};
extern enum enumPumpSelect PumpSelect[pumpMax];
+extern void MODBUS_Init( uint8_t MBAddress );
+
+
+extern float SpeedSet[pumpMax]; // ×î¸ßËÙ¶Èp/s
+extern int32_t CoordinateSet[pumpMax]; // Ä¿±êλÖÃ
+extern _Bool TaskisRunning[pumpMax]; // ·ÀÖ¹ÖØÈë±êÖ¾
+extern _Bool IdelEn[pumpMax]; // µç»ú¿ÕÏÐʹÄÜ
+
extern volatile uint32_t PluseCount[7u]; //
-extern int32_t CoordinateSet[pumpMax]; // Ä¿±êλÖÃ
+extern int32_t CoordinatePosition[pumpMax]; // ʵʱ¸üÐÂʵʱλÖÃ
+
extern void SolidValve_H2SO4( uint8_t channel, _Bool state );
extern void AirValve_Pump(_Bool state);
extern void StandardValve_Pump( _Bool state);
+extern void MotorZero_Init( enum enumPumpSelect Select);
extern void MotorCTRLInitiate( void );
+extern _Bool FindZero[pumpMax];
extern float Temperature[6];
#include "stdio.h"
diff --git a/Core/Src/StepMotor.c b/Core/Src/StepMotor.c
index 05f89d7..8a67efb 100644
--- a/Core/Src/StepMotor.c
+++ b/Core/Src/StepMotor.c
@@ -1,4 +1,5 @@
#include "APPDEF.H"
+#include "stm32f10x.h"
enum enumPumpSelect PumpSelect[pumpMax];
@@ -10,12 +11,14 @@ void Motor_IECMD( enum enumPumpSelect Select, _Bool CMD )
switch( Select )
{
case M1:
- TIM4_IECMD( CMD );
+ TIM5_IECMD( CMD );
break;
case M2:
TIM3_IECMD( CMD );
break;
+ case M3:
default:
+ TIM2_IECMD( CMD );
break;
}
@@ -31,11 +34,16 @@ void Motor_PWM( enum enumPumpSelect Select, uint16_t Value )
{
switch( Select )
{
+
+
case M1:
- TIM4_CH1_CTRL( Value, Value / 2 );
+ TIM5_CH3_CTRL( Value, Value / 2 );
break;
case M2:
- TIM3_CH2_CTRL( Value, Value / 2 );
+ TIM3_CH1_CTRL( Value, Value / 2 );
+ break;
+ case M3:
+ TIM2_CH2_CTRL( Value, Value / 2 );
break;
default:
break;
@@ -50,10 +58,13 @@ void Motor_PWMCmd( enum enumPumpSelect Select, _Bool State )
switch( Select )
{
case M1:
- TIM4_CH1_CMD( State );
+ TIM5_CH3_CMD( State );
break;
case M2:
- TIM3_CH2_CMD( State );
+ TIM3_CH1_CMD( State );
+ break;
+ case M3:
+ TIM2_CH2_CMD( State );
break;
default:
break;
@@ -68,7 +79,23 @@ void Motor_Dir( enum enumPumpSelect Select, _Bool State )
switch( Select )
{
case M1:
-// TIM4_CH1_DIR( State);
+ if(State)
+ SET_BIT( GPIOA->BSRR, GPIO_BSRR_BR3 );
+ else
+ SET_BIT( GPIOA->BSRR, GPIO_BSRR_BS3 );
+ break;
+
+ case M2:
+ if(State)
+ SET_BIT( GPIOA->BSRR, GPIO_BSRR_BR5 );
+ else
+ SET_BIT( GPIOA->BSRR, GPIO_BSRR_BS5 );
+ break;
+ case M3:
+ if(State)
+ SET_BIT( GPIOA->BSRR, GPIO_BSRR_BS0 );
+ else
+ SET_BIT( GPIOA->BSRR, GPIO_BSRR_BR0 );
break;
default:
break;
@@ -91,38 +118,46 @@ void Motor_En( enum enumPumpSelect Select, _Bool State )
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
* TIMx Öжϴ¦Àíº¯Êý
*******************************************************************************/
- volatile uint32_t SetPluseCount[7u]; // ÉèÖÃÔËÐÐÂö³åÊý
- volatile uint32_t PluseCount[7u]; // ʵ¼ÊÔËÐÐÂö³åÊý
- volatile _Bool CountOver[7u] = {false}; // ¼ÆÊýÆ÷Òç³ö±êÖ¾
- volatile uint32_t SamplePumpSetPluseCount[7u]; // ÉèÖÃÔËÐÐÂö³åÊý
- volatile uint32_t SamplePumpPluseCount[7u]; // ʵ¼ÊÔËÐÐÂö³åÊý
- volatile _Bool SamplePumpCountOver[7u] = {false}; // ¼ÆÊýÆ÷Òç³ö±êÖ¾
+volatile uint32_t SetPluseCount[7u]; // ÉèÖÃÔËÐÐÂö³åÊý
+volatile uint32_t PluseCount[7u]; // ʵ¼ÊÔËÐÐÂö³åÊý
+volatile _Bool CountOver[7u] = {false}; // ¼ÆÊýÆ÷Òç³ö±êÖ¾
+volatile uint32_t SamplePumpSetPluseCount[7u]; // ÉèÖÃÔËÐÐÂö³åÊý
+volatile uint32_t SamplePumpPluseCount[7u]; // ʵ¼ÊÔËÐÐÂö³åÊý
+volatile _Bool SamplePumpCountOver[7u] = {false}; // ¼ÆÊýÆ÷Òç³ö±êÖ¾
/********************************** ¹¦ÄÜ˵Ã÷ *************************************
* »úе±ÛÔËÐÐÈÎÎñ
*********************************************************************************/
-
-const uint32_t FullCoordinate[pumpMax] = { 20500u, 65000u,65000u };
-int32_t CoordinateSet[pumpMax]; // Ä¿±êλÖÃ
-int32_t CoordinatePosition[pumpMax]; // ʵʱ¸üÐÂʵʱλÖÃ
-uint32_t Position[pumpMax]; // ±¾´ÎÔËÐÐÆðʼλÖÃ
-_Bool TaskisRunning[pumpMax] = {0}; // ·ÀÖ¹ÖØÈë±êÖ¾
-_Bool IdelEn[pumpMax] = { false,false,false}; // µç»ú¿ÕÏÐʹÄÜ
-int32_t DCMotorSpeed[pumpMax]; // Ö±Á÷µç»úËÙ¶È
+//ÉϵçǰÐèÒªÐ޸ĵݲȫ²ÎÊý
+ /*
+ ÓÃÓÚÏÞÖÆÍⲿ³ÌÐòµ÷ÓòÎÊýµÄ¼«ÏÞÖµ£¨³¬¹ý´Ë²ÎÊý»áÎÞЧ»ò°´¼«ÏÞÖµ´¦Àí£©
+ */
+const int32_t FullCoordinate[pumpMax] = { 20500u, 65000u,125000u }; // ×î´óÐгÌÏÞÖÆ
+const float ShiftPluse[pumpMax]={ 100.0f, 1500.0f, 1500.0f }; // ±ê×¼×î´ó¼ÓËÙ¹ý³ÌÂö³åÊýÏÞÖÆ
+const float VelocityH[pumpMax]={ 10000.0f, 5000.0f, 20000.0f }; // ×î¸ßËÙ¶ÈÏÞÖÆp/s
+const float VelocityL[pumpMax]={ 10.0f, 1000.0f, 1000.0f }; // ×îµÍËÙ¶ÈÏÞÖÆp/s
-uint32_t CoordinateSetOld[pumpMax]; // ÉÏ´ÎËùÔÚλÖÃ
+
+//Íⲿ³ÌÐòµ÷ÓÃËùÐèÐ޸IJÎÊý
+float SpeedSet[pumpMax]={ 20.0f, 1000.0f, 20000.0f }; // ×î¸ßËÙ¶Èp/s
+int32_t CoordinateSet[pumpMax]; // Ä¿±êλÖÃ
+_Bool TaskisRunning[pumpMax] = {0}; // ·ÀÖ¹ÖØÈë±êÖ¾
+_Bool IdelEn[pumpMax] = { false,false,false}; // µç»ú¿ÕÏÐʹÄÜ
+
+
+// ³ÌÐòÔËÐÐʱ×Ô¶¯¸üеIJÎÊý
+int32_t CoordinatePosition[pumpMax]; // ʵʱ¸üÐÂʵʱλÖÃ
int32_t Differ[pumpMax]; // ±¾´ÎËùÐèÔËÐÐÂö³åÊý
-float SpeedSet[pumpMax]={ 100.0f, 1000.0f, 5000.0f }; // ×î¸ßËÙ¶Èp/s
+uint32_t Shifting[pumpMax] = { 500u, 500u, 500u }; // ¼ÓËÙ¹ý³ÌÂö³åÊý
uint32_t period[pumpMax] = { 20000u, 2000u, 2000u }; // PWMʵʱÖÜÆÚ
-float Velocity[pumpMax] = { 0.0f, 20.0f, 20.0f }; // ʵʱËÙ¶È
-uint32_t Shifting[pumpMax] = { 500u, 500u, 500u }; // ¼ÓËÙ¹ý³ÌÂö³åÊý
-float Speeda[pumpMax] ={ 10000.0f, 10000.0f, 10000.0f }; // ¼ÓËÙ¶È p/(s*s)
-float VelocityH[pumpMax]={ 10000.0f, 5000.0f, 5000.0f }; // ×î¸ßËÙ¶Èp/s
-float VelocityL[pumpMax]={ 10.0f, 1000.0f, 1000.0f }; // ×îµÍËÙ¶Èp/s
-float ShiftPluse[pumpMax]={ 100.0f, 1500.0f, 1500.0f }; // ±ê×¼×î´ó¼ÓËÙ¹ý³ÌÂö³åÊý
-float VelocityMax[pumpMax] = { 10000.0f, 20.0f, 20.0f }; // ×î´óËÙ¶È
-_Bool Direction[pumpMax] = { false,false,false}; // ÔËÐз½Ïò
+uint32_t CoordinateSetOld[pumpMax]; // ÉÏ´ÎËùÔÚλÖÃ
+uint32_t Position[pumpMax]; // ±¾´ÎÔËÐÐÆðʼλÖÃ
+float Speeda[pumpMax] ={ 10000.0f, 10000.0f, 10000.0f }; // ¼ÓËÙ¶È p/(s*s)
+float Velocity[pumpMax] = { 0.0f, 20.0f, 20.0f }; // ʵʱËÙ¶È
+float VelocityMax[pumpMax] = { 10000.0f, 20.0f, 20.0f }; // ×î´óËÙ¶È
+_Bool Direction[pumpMax] = { false,false,false}; // ÔËÐз½Ïò
+
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
* ËٶȼÓËÙ¶Èת»»
*******************************************************************************/
@@ -142,7 +177,10 @@ void SamplePumpSpeed_AcceleratedConver( enum enumPumpSelect Select, uint16_t Spe
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
*
*******************************************************************************/
-
+//osSemaphoreId ArmRunFinish;
+//osSemaphoreDef(ArmRunFinish);
+//osSemaphoreId SampleRunFinish;
+//osSemaphoreDef(SampleRunFinish);
_Bool SpeedMode[pumpMax];
_Bool PositionMode[pumpMax];
_Bool FindZero[pumpMax];
@@ -236,6 +274,7 @@ void SamplePumpCtrl( enum enumPumpSelect Select )
TaskisRunning[Select] = false; // Çå³ý·ÀÖØÈë±êÖ¾
CountOver[Select] = false; // Çå³ý¼ÆÊýÆ÷Òç³ö
osDelay( 15u );
+// osSemaphoreRelease(SampleRunFinish);
}
else
{
@@ -262,6 +301,7 @@ void ArmSoftCtrl( enum enumPumpSelect Select )
)
)
{
+ SamplePumpSpeed_AcceleratedConver(Select,SpeedSet[Select]);
TaskisRunning[Select] = true; // ÖÃλ ·ÀÖØÈë±êÖ¾
@@ -327,9 +367,10 @@ void ArmSoftCtrl( enum enumPumpSelect Select )
}
}
- else//if( PluseCount[Select] >= (abs(Differ) - Shifting[Select]) ) // ºóShifting[Select]Âö³å¼õËÙ
+ else if( PluseCount[Select] >= (abs(Differ[Select]) - Shifting[Select]) ) // ºóShifting[Select]Âö³å¼õËÙ
{
+
Velocity[Select] = sqrt( 2* (abs(Differ[Select]) - (float)PluseCount[Select]) * (Speeda[Select] / 2u));
if( VelocityMax[Select] < Velocity[Select] )
VelocityMax[Select] = Velocity[Select];
@@ -340,6 +381,10 @@ void ArmSoftCtrl( enum enumPumpSelect Select )
period[Select] = 1000000.0f / Velocity[Select];
Motor_PWM( Select, period[Select] );
}
+ else
+ {
+ __NOP();
+ }
osDelay( 1u );
if( Differ[Select] >= 0 ) // ¸ù¾Ý·½ÏòÆ«²îÀ´¼ÆË㵱ǰλÖÃ
@@ -366,6 +411,8 @@ void ArmSoftCtrl( enum enumPumpSelect Select )
TaskisRunning[Select] = false; // Çå³ý·ÀÖØÈë±êÖ¾
CountOver[Select] = false; // Çå³ý¼ÆÊýÆ÷Òç³ö
osDelay( 5u );
+// osSemaphoreRelease(ArmRunFinish);
+
}
else
{
@@ -382,6 +429,8 @@ void MotorCtrl(enum enumPumpSelect Select)
{
// static _Bool SpeedModeOld[pumpMax];
// static _Bool PositionModeOld[pumpMax];
+// ArmRunFinish = osSemaphoreNew( 1,0,NULL);
+// SampleRunFinish = osSemaphoreNew( 1,0,NULL);
for(;;)
{
@@ -418,82 +467,7 @@ void MotorCtrl(enum enumPumpSelect Select)
}
}
-#include "stm32f10x.h"
-/******************************** ¹¦ÄÜ˵Ã÷ *************************************
-* Öж϶˿ڳõʼ»¯Ê¹ÄÜ
-*******************************************************************************/
-void BIOS_EXTI_Init( void )
-{
-
-// // ¸¡¿ÕÊäÈëģʽ
-
- SET_BIT( RCC->APB2ENR, RCC_APB2ENR_IOPBEN );
-
- GPIOB->BSRR |= 0x0002u; // ¶Ë¿ÚÊä³öΪ1£»
-// GPIOF->BSRR |= 0x3800u; // ¶Ë¿ÚÊä³öΪ1£»
-// GPIOE->BSRR |= 0x0040u; // ¶Ë¿ÚÊä³öΪ1£»
-// SET_BIT( GPIOC->PUPDR, GPIO_PUPDR_PUPD0_0|GPIO_PUPDR_PUPD1_0|GPIO_PUPDR_PUPD2_0|GPIO_PUPDR_PUPD3_0 ); // IO¿ÚÅäÖÃ ÉÏÀ
-// SET_BIT( GPIOF->PUPDR, GPIO_PUPDR_PUPD11_0|GPIO_PUPDR_PUPD12_0|GPIO_PUPDR_PUPD13_0 ); // IO¿ÚÅäÖÃ ÉÏÀ
- CLEAR_BIT( GPIOB->CRL, GPIO_CRL_CNF1_0 );
- SET_BIT( GPIOB->CRL, GPIO_CRL_CNF1_1 );
- SET_BIT( GPIOB->ODR, GPIO_ODR_ODR1 ); // IO¿ÚÅäÖÃ ÉÏÀ
-// MODIFY_REG( GPIOC->MODER, GPIO_MODER_MODE0, GPIO_MODER_MODE0_1 ); // IO¿ÚÅäÖÃ ¸´ÓÃÊä³ö
-// MODIFY_REG( GPIOC->MODER, GPIO_MODER_MODE1, GPIO_MODER_MODE1_1 ); // IO¿ÚÅäÖÃ ¸´ÓÃÊä³ö
-// MODIFY_REG( GPIOC->MODER, GPIO_MODER_MODE2, GPIO_MODER_MODE2_1 ); // IO¿ÚÅäÖÃ ¸´ÓÃÊä³ö
-// MODIFY_REG( GPIOC->MODER, GPIO_MODER_MODE3, GPIO_MODER_MODE3_1 ); // IO¿ÚÅäÖÃ ¸´ÓÃÊä³ö
-// MODIFY_REG( GPIOF->MODER, GPIO_MODER_MODE11, GPIO_MODER_MODE11_1 ); // IO¿ÚÅäÖÃ ¸´ÓÃÊä³ö
-// MODIFY_REG( GPIOF->MODER, GPIO_MODER_MODE12, GPIO_MODER_MODE12_1 ); // IO¿ÚÅäÖÃ ¸´ÓÃÊä³ö
-// MODIFY_REG( GPIOF->MODER, GPIO_MODER_MODE13, GPIO_MODER_MODE13_1 ); // IO¿ÚÅäÖÃ ¸´ÓÃÊä³ö
-
-
-// SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN);
-// // ¿ªÆôÖжϸ´ÓÃ
-// SYSCFG->EXTICR[0] =
-// SYSCFG_EXTICR1_EXTI1_PC
-// |SYSCFG_EXTICR1_EXTI1_PC
-// |SYSCFG_EXTICR1_EXTI2_PC
-// |SYSCFG_EXTICR1_EXTI3_PC
- ;
-// SYSCFG->EXTICR[1] =
-// SYSCFG_EXTICR2_EXTI6_PF;
-// SYSCFG->EXTICR[2] =
-// SYSCFG_EXTICR3_EXTI11_PF;
-// SYSCFG->EXTICR[3] =
-// SYSCFG_EXTICR4_EXTI12_PF
-// |SYSCFG_EXTICR4_EXTI13_PF
-// ;
-SET_BIT( RCC->APB2ENR, RCC_APB2ENR_AFIOEN );
-
- AFIO->EXTICR[0] = AFIO_EXTICR1_EXTI1_PB
- // | AFIO_EXTICR1_EXTI1_PB
-// | AFIO_EXTICR1_EXTI2_PA
-// | AFIO_EXTICR1_EXTI3_PA
-// ;
-// AFIO->EXTICR[1] = AFIO_EXTICR2_EXTI4_PA
-// | AFIO_EXTICR2_EXTI5_PA
-// | AFIO_EXTICR2_EXTI6_PA
-// | AFIO_EXTICR2_EXTI7_PA
- ;
-
-
- CLEAR_BIT( EXTI->IMR, 0xFFFFu ); // ½ûÖ¹ÖжÏ
-
- CLEAR_BIT( EXTI->EMR, 0xFFFFu ); // no event ÎÞÖжÏʼþ
-// SET_BIT ( EXTI->RTSR, 0x0006u ); // rising edge trigger ÉÏÉýÑØ´¥·¢
- SET_BIT ( EXTI->FTSR, 0x0002u ); // falling edge trigger ϽµÑØ´¥·¢
- WRITE_REG( EXTI->PR, 0xFFFFu ); // ͨ¹ýд1Äܸ´Î»´¥·¢µÄÖжϱêÖ¾
-
-// SET_BIT ( EXTI->IMR, 0x384Fu ); // ÔÊÐíÖжÏ
-// // IOÖжÏ
-// NVIC_EnableIRQ( EXTI0_IRQn );
- NVIC_EnableIRQ( EXTI1_IRQn );
-// NVIC_EnableIRQ( EXTI2_IRQn );
-// NVIC_EnableIRQ( EXTI3_IRQn );
-// NVIC_EnableIRQ( EXTI9_5_IRQn );
-// NVIC_EnableIRQ( EXTI15_10_IRQn );
-
-}
/********************************** ¹¦ÄÜ˵Ã÷ ***********************************
* ÖжϿª¹Ø¿ØÖÆ
@@ -515,31 +489,32 @@ void EXTIx_IRQ_Disable( uint8_t EXTIx )
uint16_t iz = 0;
-void EXTI1_IRQHandler( void )
+//void EXTI0_IRQHandler( void )
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
iz++;
SET_BIT( EXTI->PR, 0x01u << 1 ); // д1¸´Î»Öжϱê־λ
- if(ArmInitIsRuning[M1] )
+ if(ArmInitIsRuning[M3] )
{
- if( !READ_BIT( GPIOB->IDR, GPIO_Pin_1 ) )
+ if( !READ_BIT( GPIOC->IDR, GPIO_IDR_IDR0 ) )
{
- EXTIx_IRQ_Disable( 1 );
- Motor_PWMCmd(M1, false );
- CoordinateSet[M1] = 0u;
- CoordinatePosition[M1] = 0;
+ EXTIx_IRQ_Disable( 0 );
+ Motor_PWMCmd(M3, false );
+ CoordinateSet[M3] = 0u;
+ CoordinatePosition[M3] = 0;
}
}
else
{
- if( READ_BIT( GPIOB->IDR, GPIO_Pin_1 ) )
+ if( READ_BIT( GPIOC->IDR, GPIO_IDR_IDR0 ) )
{
- EXTIx_IRQ_Disable( 1 );
+ EXTIx_IRQ_Disable( 0 );
osDelay(400);
- Motor_PWMCmd(M1, false );
- if(CoordinateSet[M1] >0)
- CoordinatePosition[M1] = 1;
+ Motor_PWMCmd(M3, false );
+ if(CoordinateSet[M3] >0)
+ CoordinatePosition[M3] = 1;
else
- CoordinatePosition[M1] = -1;
+ CoordinatePosition[M3] = -1;
CoordinateSet[M1] = 0u;
}
@@ -553,8 +528,8 @@ _Bool Exti_IOStateRead( enum enumPumpSelect Select )
_Bool state = false;
switch (Select)
{
- case M1:
- state = READ_BIT( GPIOB->IDR, GPIO_IDR_IDR1);
+ case M3:
+ state = READ_BIT( GPIOC->IDR, GPIO_IDR_IDR0);
break;
default:
break;
@@ -565,8 +540,8 @@ void Exti_IRQ_Ctrl( enum enumPumpSelect Select, _Bool State )
{
switch (Select)
{
- case M1:
- State? EXTIx_IRQ_Enable(1) : EXTIx_IRQ_Disable(1);
+ case M3:
+ State? EXTIx_IRQ_Enable(0) : EXTIx_IRQ_Disable(0);
break;
default:
@@ -575,7 +550,6 @@ void Exti_IRQ_Ctrl( enum enumPumpSelect Select, _Bool State )
}
void MotorZero_Init( enum enumPumpSelect Select)
{
- SET_BIT( GPIOA->BSRR, GPIO_BSRR_BS5 );
FindedZero[Select] =false;
EXTIx_IRQ_Disable(0);
Motor_PWMCmd( Select, false );
@@ -585,7 +559,9 @@ void MotorZero_Init( enum enumPumpSelect Select)
Motor_Dir( Select, true );
osDelay(10u);
Motor_IECMD( Select, false );
- DCMotor_PWM( Select, 55 );
+ Motor_PWM( Select, 200 );
+
+// DCMotor_PWM( Select, 55 );
if( !Exti_IOStateRead(Select) )
{
Motor_Dir( Select, false );
@@ -612,11 +588,10 @@ void MotorZero_Init( enum enumPumpSelect Select)
Direction[Select] = false;
FindedZero[Select] =true;
// RegCoilsBufRst( (22u+Select*3u) );
- usRegHoldingBuf[43] = 0;
+ /*usRegHoldingBuf[43] = 0;
usRegInputBuf[43] = 2;
- usRegHoldingBuf[7] = CoordinateSet[Select] = 0;
+ usRegHoldingBuf[7] =*/ CoordinateSet[Select] = 0;
ArmInitIsRuning[Select] = FindZero[Select] = false;
- SET_BIT( GPIOA->BSRR, GPIO_BSRR_BR5 );
}
@@ -633,25 +608,26 @@ osThreadId_t MName[pumpMax];
TaskHandle_t xTaskHandles[pumpMax];
void MotorCTRLInitiate( void )
{
- SamplePumpSpeed_AcceleratedConver(M1,100);
- SamplePumpSpeed_AcceleratedConver(M2,1000);
- SamplePumpSpeed_AcceleratedConver(M3,100);
+ SamplePumpSpeed_AcceleratedConver(M1,20); //ÖкͱÃ
+ SamplePumpSpeed_AcceleratedConver(M2,1000); // ÝÍÈ¡±Ã
+ SamplePumpSpeed_AcceleratedConver(M3,20000); // תÅ̵ç»ú
+
temp1 = xTaskCreate(_task_MotorCTRL, // ÈÎÎñº¯Êý
"TaskName1", // ÈÎÎñÃû£¨ÓÃÓÚµ÷ÊÔ£©
- 512, // ¶ÑÕ»´óС£¨ÒÔ¶ÑÕ»ÀàÐ͵ĴóСΪµ¥Î»£©
+ 256, // ¶ÑÕ»´óС£¨ÒÔ¶ÑÕ»ÀàÐ͵ĴóСΪµ¥Î»£©
(void *)M1, // ´«µÝ¸øÈÎÎñµÄ²ÎÊý
osPriorityNormal, // ÈÎÎñÓÅÏȼ¶£¨¸ù¾ÝÐèÒªµ÷Õû£©
&xTaskHandles[M1]); // ÈÎÎñ¾ä±úµÄµØÖ·£¨ÓÃÓÚÒýÓã©
temp2 = xTaskCreate(_task_MotorCTRL, // ÈÎÎñº¯Êý
"TaskName2", // ÈÎÎñÃû£¨ÓÃÓÚµ÷ÊÔ£©
- 512, // ¶ÑÕ»´óС£¨ÒÔ¶ÑÕ»ÀàÐ͵ĴóСΪµ¥Î»£©
+ 256, // ¶ÑÕ»´óС£¨ÒÔ¶ÑÕ»ÀàÐ͵ĴóСΪµ¥Î»£©
(void *)M2, // ´«µÝ¸øÈÎÎñµÄ²ÎÊý
osPriorityNormal, // ÈÎÎñÓÅÏȼ¶£¨¸ù¾ÝÐèÒªµ÷Õû£©
&xTaskHandles[M2]); // ÈÎÎñ¾ä±úµÄµØÖ·£¨ÓÃÓÚÒýÓã©
temp3 = xTaskCreate(_task_MotorCTRL, // ÈÎÎñº¯Êý
"TaskName3", // ÈÎÎñÃû£¨ÓÃÓÚµ÷ÊÔ£©
- 512, // ¶ÑÕ»´óС£¨ÒÔ¶ÑÕ»ÀàÐ͵ĴóСΪµ¥Î»£©
+ 256, // ¶ÑÕ»´óС£¨ÒÔ¶ÑÕ»ÀàÐ͵ĴóСΪµ¥Î»£©
(void *)M3, // ´«µÝ¸øÈÎÎñµÄ²ÎÊý
osPriorityNormal, // ÈÎÎñÓÅÏȼ¶£¨¸ù¾ÝÐèÒªµ÷Õû£©
&xTaskHandles[M3]); // ÈÎÎñ¾ä±úµÄµØÖ·£¨ÓÃÓÚÒýÓã©
diff --git a/Core/Src/TIM.c b/Core/Src/TIM.c
index bf56f14..3ede7d5 100644
--- a/Core/Src/TIM.c
+++ b/Core/Src/TIM.c
@@ -3,84 +3,54 @@
#include "stm32f10x.h"
#include "cmsis_os.h"
-///******************************** ¹¦ÄÜ˵Ã÷ *************************************
-//* TIM4
-//*******************************************************************************/
-//void BIOS_TIM4_Init( void )
-//{
-// SET_BIT( RCC->APB2ENR, RCC_APB2ENR_IOPDEN );
-// MODIFY_REG( GPIOD->CRH, 0x0FF00000u, 0x0B300000u ); // IO¿ÚÅäÖÃ PWM_OUT
-// GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);
-// SET_BIT( RCC->APB1ENR, RCC_APB1ENR_TIM4EN ); // ´ò¿ªÊ±ÖÓ
-// SET_BIT( RCC->APB1ENR, RCC_APB2ENR_AFIOEN ); // ´ò¿ª¸´ÓÃʱÖÓ
-// SET_BIT( TIM4->EGR, TIM_EGR_UG ); // ³õʼ»¯ËùÓмĴæÆ÷
-// TIM4->CR1 = TIM_CR1_ARPE| TIM_CR1_URS; // ×Ô¶¯×°ÔØ Òç³öÖжÏ
-// TIM4->PSC = SystemCoreClock / 1000000u - 1u; // ÉèÖÃÔ¤·ÖƵֵ
-// TIM4->ARR = 100u - 1; // ÉèÖÃÔ¤×°ÔØÖµ
-// TIM4->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3PE; // ÉèÖüÆÊý¼«ÐԺ͹¤×÷ģʽ
-//// TIM4->CCER = TIM_CCER_CC3E; // ʹÄÜͨµÀ
-// TIM4->CCR3 = 100/2u; // ÉèÖ÷תֵ
-// NVIC_EnableIRQ(TIM4_IRQn);
-// SET_BIT( TIM4->CR1, TIM_CR1_CEN ); // ʹÄܼÆÊýÆ÷
-//}
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
-* TIM4->CH3 ¿ØÖÆ
+* TIM5->CH3 ¿ØÖÆ
*******************************************************************************/
-void TIM4_CH1_CTRL(uint16_t ARRValue, uint16_t CCRValue )
+void TIM5_CH3_CTRL(uint16_t ARRValue, uint16_t CCRValue )
{
- TIM4->ARR = ARRValue; // ÉèÖÃÔ¤×°ÔØ
- TIM4->CCR1 = CCRValue; // ÉèÖ÷תֵ
+ TIM5->ARR = ARRValue; // ÉèÖÃÔ¤×°ÔØ
+ TIM5->CCR3 = CCRValue; // ÉèÖ÷תֵ
}
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
-* TIM4->CH3 PWM¿ª¹Ø
+* TIM5->CH3 PWM¿ª¹Ø
*******************************************************************************/
-void TIM4_CH1_CMD( _Bool CMD )
+void TIM5_CH3_CMD( _Bool CMD )
{
if( CMD )
{
- SET_BIT( TIM4->CR1,TIM_CR1_CEN );
- SET_BIT( TIM4->CCER,TIM_CCER_CC1E );
+ SET_BIT( TIM5->CR1,TIM_CR1_CEN );
+ SET_BIT( TIM5->CCER,TIM_CCER_CC3E );
}
else
{
- CLEAR_BIT( TIM4->CCER,TIM_CCER_CC1E );
- CLEAR_BIT( TIM4->CR1,TIM_CR1_CEN );
+ CLEAR_BIT( TIM5->CCER,TIM_CCER_CC3E );
+ CLEAR_BIT( TIM5->CR1,TIM_CR1_CEN );
}
}
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
* DIR
*******************************************************************************/
-//void TIM4_CH1_DIR( _Bool CMD )
-//{
-// if( CMD )
-// {
-// GPIO_SetBits( GPIOD, GPIO_ODR_ODR13 );
-// }
-// else
-// {
-// GPIO_ResetBits( GPIOD, GPIO_ODR_ODR13 );
-// }
-//}
+
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
*
*******************************************************************************/
-void TIM4_IECMD( _Bool CMD )
+void TIM5_IECMD( _Bool CMD )
{
if( CMD )
{
- SET_BIT(TIM4->DIER, TIM_DIER_CC1IE); // ʹÄÜÖжÏ
- CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // Çå³ýÖжϱê¼Ç
+ SET_BIT(TIM5->DIER, TIM_DIER_CC3IE); // ʹÄÜÖжÏ
+ CLEAR_BIT( TIM5->SR, TIM_SR_UIF | TIM_SR_CC3IF ); // Çå³ýÖжϱê¼Ç
}
else
{
- CLEAR_BIT(TIM4->DIER,TIM_DIER_CC1IE); // ʧÄÜÖжÏ
- CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // Çå³ýÖжϱê¼Ç
+ CLEAR_BIT(TIM5->DIER,TIM_DIER_CC3IE); // ʧÄÜÖжÏ
+ CLEAR_BIT( TIM5->SR, TIM_SR_UIF | TIM_SR_CC3IF ); // Çå³ýÖжϱê¼Ç
}
}
@@ -91,29 +61,29 @@ void TIM4_IECMD( _Bool CMD )
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
-* TIM3->CH2 ¿ØÖÆ
+* TIM3->CH1 ¿ØÖÆ
*******************************************************************************/
-void TIM3_CH2_CTRL(uint16_t ARRValue, uint16_t CCRValue )
+void TIM3_CH1_CTRL(uint16_t ARRValue, uint16_t CCRValue )
{
TIM3->ARR = ARRValue; // ÉèÖÃÔ¤×°ÔØ
- TIM3->CCR2 = CCRValue; // ÉèÖ÷תֵ
+ TIM3->CCR1 = CCRValue; // ÉèÖ÷תֵ
}
/******************************** ¹¦ÄÜ˵Ã÷ *************************************
-* TIM4->CH3 PWM¿ª¹Ø
+* TIM3->CH1 PWM¿ª¹Ø
*******************************************************************************/
-void TIM3_CH2_CMD( _Bool CMD )
+void TIM3_CH1_CMD( _Bool CMD )
{
if( CMD )
{
SET_BIT( TIM3->CR1,TIM_CR1_CEN );
- SET_BIT( TIM3->CCER,TIM_CCER_CC2E );
+ SET_BIT( TIM3->CCER,TIM_CCER_CC1E );
}
else
{
- CLEAR_BIT( TIM3->CCER,TIM_CCER_CC2E );
+ CLEAR_BIT( TIM3->CCER,TIM_CCER_CC1E );
CLEAR_BIT( TIM3->CR1, TIM_CR1_CEN );
}
}
@@ -139,13 +109,74 @@ void TIM3_IECMD( _Bool CMD )
{
if( CMD )
{
- SET_BIT(TIM3->DIER, TIM_DIER_CC2IE); // ʹÄÜÖжÏ
- CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // Çå³ýÖжϱê¼Ç
+ SET_BIT(TIM3->DIER, TIM_DIER_CC1IE); // ʹÄÜÖжÏ
+ CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // Çå³ýÖжϱê¼Ç
}
else
{
CLEAR_BIT(TIM3->DIER,TIM_DIER_CC1IE); // ʧÄÜÖжÏ
- CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // Çå³ýÖжϱê¼Ç
+ CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // Çå³ýÖжϱê¼Ç
+ }
+}
+
+
+/******************************** ¹¦ÄÜ˵Ã÷ *************************************
+* TIM2->CH2 ¿ØÖÆ
+*******************************************************************************/
+
+void TIM2_CH2_CTRL(uint16_t ARRValue, uint16_t CCRValue )
+{
+ TIM2->ARR = ARRValue; // ÉèÖÃÔ¤×°ÔØ
+ TIM2->CCR2 = CCRValue; // ÉèÖ÷תֵ
+}
+
+/******************************** ¹¦ÄÜ˵Ã÷ *************************************
+* TIM2->CH2 PWM¿ª¹Ø
+*******************************************************************************/
+
+void TIM2_CH2_CMD( _Bool CMD )
+{
+ if( CMD )
+ {
+ SET_BIT( TIM2->CR1,TIM_CR1_CEN );
+ SET_BIT( TIM2->CCER,TIM_CCER_CC2E );
+ }
+ else
+ {
+ CLEAR_BIT( TIM2->CCER,TIM_CCER_CC2E );
+ CLEAR_BIT( TIM2->CR1, TIM_CR1_CEN );
+ }
+}
+/******************************** ¹¦ÄÜ˵Ã÷ *************************************
+* DIR
+*******************************************************************************/
+
+//void TIM4_CH1_DIR( _Bool CMD )
+//{
+// if( CMD )
+// {
+// GPIO_SetBits( GPIOD, GPIO_ODR_ODR13 );
+// }
+// else
+// {
+// GPIO_ResetBits( GPIOD, GPIO_ODR_ODR13 );
+// }
+//}
+/******************************** ¹¦ÄÜ˵Ã÷ *************************************
+*
+*******************************************************************************/
+void TIM2_IECMD( _Bool CMD )
+{
+ if( CMD )
+ {
+ SET_BIT(TIM2->DIER, TIM_DIER_CC2IE); // ʹÄÜÖжÏ
+ CLEAR_BIT( TIM2->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // Çå³ýÖжϱê¼Ç
+
+ }
+ else
+ {
+ CLEAR_BIT(TIM2->DIER,TIM_DIER_CC2IE); // ʧÄÜÖжÏ
+ CLEAR_BIT( TIM2->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // Çå³ýÖжϱê¼Ç
}
}
diff --git a/Core/Src/main.c b/Core/Src/main.c
index c9205f1..97cc008 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -44,14 +44,19 @@
ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef hdma_adc1;
+TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim3;
-TIM_HandleTypeDef htim4;
+TIM_HandleTypeDef htim5;
+TIM_HandleTypeDef htim8;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart3;
/* Definitions for defaultTask */
osThreadId_t defaultTaskHandle;
const osThreadAttr_t defaultTask_attributes = {
.name = "defaultTask",
- .stack_size = 128 * 4,
+ .stack_size = 128 * 6,
.priority = (osPriority_t) osPriorityNormal,
};
/* USER CODE BEGIN PV */
@@ -64,7 +69,11 @@ static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_ADC1_Init(void);
static void MX_TIM3_Init(void);
-static void MX_TIM4_Init(void);
+static void MX_TIM2_Init(void);
+static void MX_TIM5_Init(void);
+static void MX_TIM8_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART3_UART_Init(void);
void StartDefaultTask(void *argument);
/* USER CODE BEGIN PFP */
@@ -73,8 +82,28 @@ void StartDefaultTask(void *argument);
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
-uint32_t step = 100;
-uint32_t ADCDataBuf[10];
+/**
+***********************************************************
+* @brief printfº¯ÊýĬÈÏ´òÓ¡Êä³öµ½ÏÔʾÆ÷£¬Èç¹ûÒªÊä³öµ½´®¿Ú£¬
+ ±ØÐëÖØÐÂʵÏÖfputcº¯Êý£¬½«Êä³öÖ¸Ïò´®¿Ú£¬³ÆÎªÖض¨Ïò
+* @param
+* @return
+***********************************************************
+*/
+
+int fputc(int ch, FILE *f)
+{
+ HAL_UART_Transmit(&huart3,(uint8_t *)&ch,1,0xFFFF);
+ return ch;
+}
+
+char StateString[40];
+
+extern uint32_t ADCDataBuf[10];
+void StirrerCtrl( uint16_t CCRV )
+{
+ __HAL_TIM_SetCompare(&htim8,TIM_CHANNEL_1,CCRV);
+}
/* USER CODE END 0 */
/**
@@ -85,8 +114,6 @@ int main(void)
{
/* USER CODE BEGIN 1 */
-
-
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
@@ -110,9 +137,14 @@ int main(void)
MX_DMA_Init();
MX_ADC1_Init();
MX_TIM3_Init();
- MX_TIM4_Init();
+ MX_TIM2_Init();
+ MX_TIM5_Init();
+ MX_TIM8_Init();
+ MX_USART1_UART_Init();
+ MX_USART3_UART_Init();
/* USER CODE BEGIN 2 */
-
+ __HAL_TIM_SetCompare(&htim8,TIM_CHANNEL_1,0);
+ HAL_TIM_PWM_Start( &htim8, TIM_CHANNEL_1);
/* USER CODE END 2 */
/* Init scheduler */
@@ -229,12 +261,12 @@ static void MX_ADC1_Init(void)
/** Common config
*/
hadc1.Instance = ADC1;
- hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
+ hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
hadc1.Init.ContinuousConvMode = ENABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- hadc1.Init.NbrOfConversion = 1;
+ hadc1.Init.NbrOfConversion = 16;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
@@ -242,19 +274,199 @@ static void MX_ADC1_Init(void)
/** Configure Regular Channel
*/
- sConfig.Channel = ADC_CHANNEL_0;
+ sConfig.Channel = ADC_CHANNEL_8;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_2;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_3;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_4;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_5;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_6;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_7;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_8;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Channel = ADC_CHANNEL_9;
+ sConfig.Rank = ADC_REGULAR_RANK_9;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_10;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_11;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_12;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_13;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_14;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_15;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Configure Regular Channel
+ */
+ sConfig.Rank = ADC_REGULAR_RANK_16;
+ if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
/* USER CODE BEGIN ADC1_Init 2 */
/* USER CODE END ADC1_Init 2 */
}
+/**
+ * @brief TIM2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_TIM2_Init(void)
+{
+
+ /* USER CODE BEGIN TIM2_Init 0 */
+
+ /* USER CODE END TIM2_Init 0 */
+
+ TIM_ClockConfigTypeDef sClockSourceConfig = {0};
+ TIM_MasterConfigTypeDef sMasterConfig = {0};
+ TIM_OC_InitTypeDef sConfigOC = {0};
+
+ /* USER CODE BEGIN TIM2_Init 1 */
+
+ /* USER CODE END TIM2_Init 1 */
+ htim2.Instance = TIM2;
+ htim2.Init.Prescaler = 72;
+ htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
+ htim2.Init.Period = 999;
+ htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+ htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
+ if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
+ if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
+ sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
+ if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sConfigOC.OCMode = TIM_OCMODE_PWM1;
+ sConfigOC.Pulse = 499;
+ sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
+ sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
+ if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN TIM2_Init 2 */
+
+ /* USER CODE END TIM2_Init 2 */
+ HAL_TIM_MspPostInit(&htim2);
+
+}
+
/**
* @brief TIM3 Initialization Function
* @param None
@@ -303,7 +515,7 @@ static void MX_TIM3_Init(void)
sConfigOC.Pulse = 499;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
+ if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
@@ -315,46 +527,36 @@ static void MX_TIM3_Init(void)
}
/**
- * @brief TIM4 Initialization Function
+ * @brief TIM5 Initialization Function
* @param None
* @retval None
*/
-static void MX_TIM4_Init(void)
+static void MX_TIM5_Init(void)
{
- /* USER CODE BEGIN TIM4_Init 0 */
+ /* USER CODE BEGIN TIM5_Init 0 */
- /* USER CODE END TIM4_Init 0 */
+ /* USER CODE END TIM5_Init 0 */
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
- /* USER CODE BEGIN TIM4_Init 1 */
+ /* USER CODE BEGIN TIM5_Init 1 */
- /* USER CODE END TIM4_Init 1 */
- htim4.Instance = TIM4;
- htim4.Init.Prescaler = 72;
- htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim4.Init.Period = 999;
- htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
- if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
- {
- Error_Handler();
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
+ /* USER CODE END TIM5_Init 1 */
+ htim5.Instance = TIM5;
+ htim5.Init.Prescaler = 72;
+ htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
+ htim5.Init.Period = 999;
+ htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+ htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
+ if (HAL_TIM_PWM_Init(&htim5) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
+ if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
@@ -362,14 +564,155 @@ static void MX_TIM4_Init(void)
sConfigOC.Pulse = 499;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
+ if (HAL_TIM_PWM_ConfigChannel(&htim5, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
{
Error_Handler();
}
- /* USER CODE BEGIN TIM4_Init 2 */
+ /* USER CODE BEGIN TIM5_Init 2 */
- /* USER CODE END TIM4_Init 2 */
- HAL_TIM_MspPostInit(&htim4);
+ /* USER CODE END TIM5_Init 2 */
+ HAL_TIM_MspPostInit(&htim5);
+
+}
+
+/**
+ * @brief TIM8 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_TIM8_Init(void)
+{
+
+ /* USER CODE BEGIN TIM8_Init 0 */
+
+ /* USER CODE END TIM8_Init 0 */
+
+ TIM_ClockConfigTypeDef sClockSourceConfig = {0};
+ TIM_MasterConfigTypeDef sMasterConfig = {0};
+ TIM_OC_InitTypeDef sConfigOC = {0};
+ TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
+
+ /* USER CODE BEGIN TIM8_Init 1 */
+
+ /* USER CODE END TIM8_Init 1 */
+ htim8.Instance = TIM8;
+ htim8.Init.Prescaler = 72;
+ htim8.Init.CounterMode = TIM_COUNTERMODE_UP;
+ htim8.Init.Period = 999;
+ htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+ htim8.Init.RepetitionCounter = 0;
+ htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
+ if (HAL_TIM_Base_Init(&htim8) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
+ if (HAL_TIM_ConfigClockSource(&htim8, &sClockSourceConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ if (HAL_TIM_PWM_Init(&htim8) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
+ sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
+ if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sConfigOC.OCMode = TIM_OCMODE_PWM1;
+ sConfigOC.Pulse = 0;
+ sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
+ sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
+ sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
+ sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
+ sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
+ if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
+ sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
+ sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
+ sBreakDeadTimeConfig.DeadTime = 0;
+ sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
+ sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
+ sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
+ if (HAL_TIMEx_ConfigBreakDeadTime(&htim8, &sBreakDeadTimeConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN TIM8_Init 2 */
+
+ /* USER CODE END TIM8_Init 2 */
+ HAL_TIM_MspPostInit(&htim8);
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
}
@@ -396,30 +739,73 @@ static void MX_DMA_Init(void)
*/
static void MX_GPIO_Init(void)
{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOD_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_7
+ |GPIO_PIN_8, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4|GPIO_PIN_5, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin : PC0 */
+ GPIO_InitStruct.Pin = GPIO_PIN_0;
+ GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : PC1 PC2 */
+ GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : PA0 PA3 PA5 PA7
+ PA8 */
+ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_7
+ |GPIO_PIN_8;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : PC4 PC5 */
+ GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : PB10 PB11 PB12 */
+ GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* EXTI interrupt init*/
+ HAL_NVIC_SetPriority(EXTI0_IRQn, 5, 0);
+ HAL_NVIC_EnableIRQ(EXTI0_IRQn);
+
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}
/* USER CODE BEGIN 4 */
-float ADCData;
-float slope1,slope2;
-float SetmL,UseuL;
-_Bool CuiQuFlag = false;
-_Bool ZhongHeFlag = false;
-
-
-
-
+extern void YouSuanRun( void );
/* USER CODE END 4 */
@@ -434,47 +820,11 @@ void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
-// HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
-// HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
- MotorCTRLInitiate();
HAL_ADCEx_Calibration_Start(&hadc1);
- HAL_ADC_Start_DMA( &hadc1,ADCDataBuf,20);
- slope1 = 82700;
- slope2 = 0.01166;
- for(;;)
- {
- osDelay(500);
- if(ZhongHeFlag)
- {
- CoordinateSet[0] = 6550000;
- UseuL = PluseCount[0] * slope2;
- }
- else
- {
- CoordinateSet[0] = 0;
- }
- if(CuiQuFlag)
- {
-
- CoordinateSet[1] = SetmL *slope1;
- CuiQuFlag = false;
- }
+ HAL_ADC_Start_DMA( &hadc1,ADCDataBuf,16);
- ADCData = (
- (ADCDataBuf[0] >> 16) + (uint16_t)ADCDataBuf[0] +
- (ADCDataBuf[1] >> 16) + (uint16_t)ADCDataBuf[1] +
- (ADCDataBuf[2] >> 16) + (uint16_t)ADCDataBuf[2] +
- (ADCDataBuf[3] >> 16) + (uint16_t)ADCDataBuf[3] +
- (ADCDataBuf[4] >> 16) + (uint16_t)ADCDataBuf[4] +
- (ADCDataBuf[5] >> 16) + (uint16_t)ADCDataBuf[5] +
- (ADCDataBuf[6] >> 16) + (uint16_t)ADCDataBuf[6] +
- (ADCDataBuf[7] >> 16) + (uint16_t)ADCDataBuf[7] +
- (ADCDataBuf[8] >> 16) + (uint16_t)ADCDataBuf[8] +
- (ADCDataBuf[9] >> 16) + (uint16_t)ADCDataBuf[9] ) / 20;
+ YouSuanRun();
-// if(CoordinateSet[0] == 0)
-// CoordinateSet[0] = step;
- }
/* USER CODE END 5 */
}
diff --git a/Core/Src/stm32f1xx_hal_msp.c b/Core/Src/stm32f1xx_hal_msp.c
index 55fc96b..11a16c5 100644
--- a/Core/Src/stm32f1xx_hal_msp.c
+++ b/Core/Src/stm32f1xx_hal_msp.c
@@ -60,7 +60,7 @@ extern DMA_HandleTypeDef hdma_adc1;
/* USER CODE END 0 */
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
- /**
+ /**
* Initializes the Global MSP.
*/
void HAL_MspInit(void)
@@ -103,13 +103,14 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
/* Peripheral clock enable */
__HAL_RCC_ADC1_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
/**ADC1 GPIO Configuration
- PA0-WKUP ------> ADC1_IN0
+ PB0 ------> ADC1_IN8
+ PB1 ------> ADC1_IN9
*/
- GPIO_InitStruct.Pin = GPIO_PIN_0;
+ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* ADC1 DMA Init */
/* ADC1 Init */
@@ -120,7 +121,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
hdma_adc1.Init.Mode = DMA_CIRCULAR;
- hdma_adc1.Init.Priority = DMA_PRIORITY_MEDIUM;
+ hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
{
Error_Handler();
@@ -153,9 +154,10 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
__HAL_RCC_ADC1_CLK_DISABLE();
/**ADC1 GPIO Configuration
- PA0-WKUP ------> ADC1_IN0
+ PB0 ------> ADC1_IN8
+ PB1 ------> ADC1_IN9
*/
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0);
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1);
/* ADC1 DMA DeInit */
HAL_DMA_DeInit(hadc->DMA_Handle);
@@ -174,7 +176,21 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
{
- if(htim_base->Instance==TIM3)
+ if(htim_base->Instance==TIM2)
+ {
+ /* USER CODE BEGIN TIM2_MspInit 0 */
+
+ /* USER CODE END TIM2_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_TIM2_CLK_ENABLE();
+ /* TIM2 interrupt Init */
+ HAL_NVIC_SetPriority(TIM2_IRQn, 5, 0);
+ HAL_NVIC_EnableIRQ(TIM2_IRQn);
+ /* USER CODE BEGIN TIM2_MspInit 1 */
+
+ /* USER CODE END TIM2_MspInit 1 */
+ }
+ else if(htim_base->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspInit 0 */
@@ -188,19 +204,42 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
/* USER CODE END TIM3_MspInit 1 */
}
- else if(htim_base->Instance==TIM4)
+ else if(htim_base->Instance==TIM8)
{
- /* USER CODE BEGIN TIM4_MspInit 0 */
+ /* USER CODE BEGIN TIM8_MspInit 0 */
- /* USER CODE END TIM4_MspInit 0 */
+ /* USER CODE END TIM8_MspInit 0 */
/* Peripheral clock enable */
- __HAL_RCC_TIM4_CLK_ENABLE();
- /* TIM4 interrupt Init */
- HAL_NVIC_SetPriority(TIM4_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(TIM4_IRQn);
- /* USER CODE BEGIN TIM4_MspInit 1 */
+ __HAL_RCC_TIM8_CLK_ENABLE();
+ /* USER CODE BEGIN TIM8_MspInit 1 */
+
+ /* USER CODE END TIM8_MspInit 1 */
+ }
+
+}
+
+/**
+ * @brief TIM_PWM MSP Initialization
+ * This function configures the hardware resources used in this example
+ * @param htim_pwm: TIM_PWM handle pointer
+ * @retval None
+ */
+void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* htim_pwm)
+{
+ if(htim_pwm->Instance==TIM5)
+ {
+ /* USER CODE BEGIN TIM5_MspInit 0 */
+
+ /* USER CODE END TIM5_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_TIM5_CLK_ENABLE();
+ /* TIM5 interrupt Init */
+ HAL_NVIC_SetPriority(TIM5_IRQn, 5, 0);
+ HAL_NVIC_EnableIRQ(TIM5_IRQn);
+ /* USER CODE BEGIN TIM5_MspInit 1 */
+
+ /* USER CODE END TIM5_MspInit 1 */
- /* USER CODE END TIM4_MspInit 1 */
}
}
@@ -208,44 +247,80 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(htim->Instance==TIM3)
+ if(htim->Instance==TIM2)
+ {
+ /* USER CODE BEGIN TIM2_MspPostInit 0 */
+
+ /* USER CODE END TIM2_MspPostInit 0 */
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**TIM2 GPIO Configuration
+ PA1 ------> TIM2_CH2
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_1;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM2_MspPostInit 1 */
+
+ /* USER CODE END TIM2_MspPostInit 1 */
+ }
+ else if(htim->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspPostInit 0 */
/* USER CODE END TIM3_MspPostInit 0 */
- __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
/**TIM3 GPIO Configuration
- PB5 ------> TIM3_CH2
+ PA6 ------> TIM3_CH1
*/
- GPIO_InitStruct.Pin = GPIO_PIN_5;
+ GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
- __HAL_AFIO_REMAP_TIM3_PARTIAL();
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN TIM3_MspPostInit 1 */
/* USER CODE END TIM3_MspPostInit 1 */
}
- else if(htim->Instance==TIM4)
+ else if(htim->Instance==TIM5)
{
- /* USER CODE BEGIN TIM4_MspPostInit 0 */
+ /* USER CODE BEGIN TIM5_MspPostInit 0 */
- /* USER CODE END TIM4_MspPostInit 0 */
+ /* USER CODE END TIM5_MspPostInit 0 */
- __HAL_RCC_GPIOB_CLK_ENABLE();
- /**TIM4 GPIO Configuration
- PB6 ------> TIM4_CH1
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**TIM5 GPIO Configuration
+ PA2 ------> TIM5_CH3
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_2;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM5_MspPostInit 1 */
+
+ /* USER CODE END TIM5_MspPostInit 1 */
+ }
+ else if(htim->Instance==TIM8)
+ {
+ /* USER CODE BEGIN TIM8_MspPostInit 0 */
+
+ /* USER CODE END TIM8_MspPostInit 0 */
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ /**TIM8 GPIO Configuration
+ PC6 ------> TIM8_CH1
*/
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /* USER CODE BEGIN TIM4_MspPostInit 1 */
+ /* USER CODE BEGIN TIM8_MspPostInit 1 */
- /* USER CODE END TIM4_MspPostInit 1 */
+ /* USER CODE END TIM8_MspPostInit 1 */
}
}
@@ -257,7 +332,21 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
*/
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
{
- if(htim_base->Instance==TIM3)
+ if(htim_base->Instance==TIM2)
+ {
+ /* USER CODE BEGIN TIM2_MspDeInit 0 */
+
+ /* USER CODE END TIM2_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM2_CLK_DISABLE();
+
+ /* TIM2 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(TIM2_IRQn);
+ /* USER CODE BEGIN TIM2_MspDeInit 1 */
+
+ /* USER CODE END TIM2_MspDeInit 1 */
+ }
+ else if(htim_base->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspDeInit 0 */
@@ -271,19 +360,156 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
/* USER CODE END TIM3_MspDeInit 1 */
}
- else if(htim_base->Instance==TIM4)
+ else if(htim_base->Instance==TIM8)
{
- /* USER CODE BEGIN TIM4_MspDeInit 0 */
+ /* USER CODE BEGIN TIM8_MspDeInit 0 */
- /* USER CODE END TIM4_MspDeInit 0 */
+ /* USER CODE END TIM8_MspDeInit 0 */
/* Peripheral clock disable */
- __HAL_RCC_TIM4_CLK_DISABLE();
+ __HAL_RCC_TIM8_CLK_DISABLE();
+ /* USER CODE BEGIN TIM8_MspDeInit 1 */
- /* TIM4 interrupt DeInit */
- HAL_NVIC_DisableIRQ(TIM4_IRQn);
- /* USER CODE BEGIN TIM4_MspDeInit 1 */
+ /* USER CODE END TIM8_MspDeInit 1 */
+ }
- /* USER CODE END TIM4_MspDeInit 1 */
+}
+
+/**
+ * @brief TIM_PWM MSP De-Initialization
+ * This function freeze the hardware resources used in this example
+ * @param htim_pwm: TIM_PWM handle pointer
+ * @retval None
+ */
+void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* htim_pwm)
+{
+ if(htim_pwm->Instance==TIM5)
+ {
+ /* USER CODE BEGIN TIM5_MspDeInit 0 */
+
+ /* USER CODE END TIM5_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM5_CLK_DISABLE();
+
+ /* TIM5 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(TIM5_IRQn);
+ /* USER CODE BEGIN TIM5_MspDeInit 1 */
+
+ /* USER CODE END TIM5_MspDeInit 1 */
+ }
+
+}
+
+/**
+ * @brief UART MSP Initialization
+ * This function configures the hardware resources used in this example
+ * @param huart: UART handle pointer
+ * @retval None
+ */
+void HAL_UART_MspInit(UART_HandleTypeDef* huart)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(huart->Instance==USART1)
+ {
+ /* USER CODE BEGIN USART1_MspInit 0 */
+
+ /* USER CODE END USART1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_USART1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**USART1 GPIO Configuration
+ PA9 ------> USART1_TX
+ PA10 ------> USART1_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_9;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_10;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN USART1_MspInit 1 */
+
+ /* USER CODE END USART1_MspInit 1 */
+ }
+ else if(huart->Instance==USART3)
+ {
+ /* USER CODE BEGIN USART3_MspInit 0 */
+
+ /* USER CODE END USART3_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_USART3_CLK_ENABLE();
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ /**USART3 GPIO Configuration
+ PC10 ------> USART3_TX
+ PC11 ------> USART3_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_10;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_11;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ __HAL_AFIO_REMAP_USART3_PARTIAL();
+
+ /* USER CODE BEGIN USART3_MspInit 1 */
+
+ /* USER CODE END USART3_MspInit 1 */
+ }
+
+}
+
+/**
+ * @brief UART MSP De-Initialization
+ * This function freeze the hardware resources used in this example
+ * @param huart: UART handle pointer
+ * @retval None
+ */
+void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
+{
+ if(huart->Instance==USART1)
+ {
+ /* USER CODE BEGIN USART1_MspDeInit 0 */
+
+ /* USER CODE END USART1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_USART1_CLK_DISABLE();
+
+ /**USART1 GPIO Configuration
+ PA9 ------> USART1_TX
+ PA10 ------> USART1_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
+
+ /* USER CODE BEGIN USART1_MspDeInit 1 */
+
+ /* USER CODE END USART1_MspDeInit 1 */
+ }
+ else if(huart->Instance==USART3)
+ {
+ /* USER CODE BEGIN USART3_MspDeInit 0 */
+
+ /* USER CODE END USART3_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_USART3_CLK_DISABLE();
+
+ /**USART3 GPIO Configuration
+ PC10 ------> USART3_TX
+ PC11 ------> USART3_RX
+ */
+ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11);
+
+ /* USER CODE BEGIN USART3_MspDeInit 1 */
+
+ /* USER CODE END USART3_MspDeInit 1 */
}
}
diff --git a/Core/Src/stm32f1xx_it.c b/Core/Src/stm32f1xx_it.c
index 7135c88..73e8036 100644
--- a/Core/Src/stm32f1xx_it.c
+++ b/Core/Src/stm32f1xx_it.c
@@ -25,8 +25,9 @@
extern volatile uint32_t SetPluseCount[7u]; // ��������������
extern volatile uint32_t PluseCount[7u]; // ʵ������������
extern volatile _Bool CountOver[7u]; // �����������־
-extern void TIM3_CH2_CMD( _Bool CMD );
-extern void TIM4_CH1_CMD( _Bool CMD );
+extern void TIM3_CH1_CMD( _Bool CMD );
+extern void TIM5_CH3_CMD( _Bool CMD );
+extern void TIM2_CH2_CMD( _Bool CMD );
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -61,8 +62,9 @@ extern void TIM4_CH1_CMD( _Bool CMD );
/* External variables --------------------------------------------------------*/
extern DMA_HandleTypeDef hdma_adc1;
+extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim3;
-extern TIM_HandleTypeDef htim4;
+extern TIM_HandleTypeDef htim5;
extern TIM_HandleTypeDef htim1;
/* USER CODE BEGIN EV */
@@ -167,6 +169,20 @@ void DebugMon_Handler(void)
/* please refer to the startup file (startup_stm32f1xx.s). */
/******************************************************************************/
+/**
+ * @brief This function handles EXTI line0 interrupt.
+ */
+void EXTI0_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI0_IRQn 0 */
+
+ /* USER CODE END EXTI0_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
+ /* USER CODE BEGIN EXTI0_IRQn 1 */
+
+ /* USER CODE END EXTI0_IRQn 1 */
+}
+
/**
* @brief This function handles DMA1 channel1 global interrupt.
*/
@@ -195,6 +211,29 @@ void TIM1_UP_IRQHandler(void)
/* USER CODE END TIM1_UP_IRQn 1 */
}
+/**
+ * @brief This function handles TIM2 global interrupt.
+ */
+void TIM2_IRQHandler(void)
+{
+ /* USER CODE BEGIN TIM2_IRQn 0 */
+
+ /* USER CODE END TIM2_IRQn 0 */
+ HAL_TIM_IRQHandler(&htim2);
+ /* USER CODE BEGIN TIM2_IRQn 1 */
+ CLEAR_BIT( TIM2->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // ����жϱ��
+ if( PluseCount[2u] < SetPluseCount[2u] )
+ PluseCount[2u] ++;
+ else
+ {
+ TIM2_CH2_CMD( 0 );
+ CountOver[2u] = 1;
+ CLEAR_BIT( TIM2->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // ����жϱ��
+ }
+
+ /* USER CODE END TIM2_IRQn 1 */
+}
+
/**
* @brief This function handles TIM3 global interrupt.
*/
@@ -205,39 +244,39 @@ void TIM3_IRQHandler(void)
/* USER CODE END TIM3_IRQn 0 */
HAL_TIM_IRQHandler(&htim3);
/* USER CODE BEGIN TIM3_IRQn 1 */
- CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // ����жϱ��
+ CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // ����жϱ��
if( PluseCount[1u] < SetPluseCount[1u] )
PluseCount[1u] ++;
else
{
- TIM3_CH2_CMD( 0 );
+ TIM3_CH1_CMD( 0 );
CountOver[1u] = 1;
- CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // ����жϱ��
+ CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // ����жϱ��
}
/* USER CODE END TIM3_IRQn 1 */
}
/**
- * @brief This function handles TIM4 global interrupt.
+ * @brief This function handles TIM5 global interrupt.
*/
-void TIM4_IRQHandler(void)
+void TIM5_IRQHandler(void)
{
- /* USER CODE BEGIN TIM4_IRQn 0 */
+ /* USER CODE BEGIN TIM5_IRQn 0 */
- /* USER CODE END TIM4_IRQn 0 */
- HAL_TIM_IRQHandler(&htim4);
- /* USER CODE BEGIN TIM4_IRQn 1 */
- CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // ����жϱ��
- if( PluseCount[0u] < SetPluseCount[0u] )
- PluseCount[0u] ++;
- else
- {
- TIM4_CH1_CMD( 0 );
- CountOver[0u] = 1;
- CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // ����жϱ��
- }
+ /* USER CODE END TIM5_IRQn 0 */
+ HAL_TIM_IRQHandler(&htim5);
+ /* USER CODE BEGIN TIM5_IRQn 1 */
+ CLEAR_BIT( TIM5->SR, TIM_SR_UIF | TIM_SR_CC3IF ); // ����жϱ��
+ if( PluseCount[0u] < SetPluseCount[0u] )
+ PluseCount[0u] ++;
+ else
+ {
+ TIM5_CH3_CMD( 0 );
+ CountOver[0u] = 1;
+ CLEAR_BIT( TIM5->SR, TIM_SR_UIF | TIM_SR_CC3IF ); // ����жϱ��
+ }
- /* USER CODE END TIM4_IRQn 1 */
+ /* USER CODE END TIM5_IRQn 1 */
}
/* USER CODE BEGIN 1 */
diff --git a/MDK-ARM/YouSuan.uvoptx b/MDK-ARM/YouSuan.uvoptx
index 44098a5..17d686b 100644
--- a/MDK-ARM/YouSuan.uvoptx
+++ b/MDK-ARM/YouSuan.uvoptx
@@ -130,7 +130,7 @@
0
DLGTARM
- (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)
+ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,0)(123=-1,-1,-1,-1,0)(124=-1,-1,-1,-1,0)(125=-1,-1,-1,-1,0)(126=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)
0
@@ -145,7 +145,7 @@
0
CMSIS_AGDI
- -X"CMSIS-DAP" -USTM32er.220207 -O2758 -S9 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC72000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO23 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RC$Flash\STM32F10x_512.FLM)
+ -X"ATK-HS-V3-CMSIS-DAP" -UATK 20190528 -O2758 -S9 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC72000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO31 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RC$Flash\STM32F10x_512.FLM)
0
@@ -158,94 +158,166 @@
0
1
- CoordinateSet,0x0A
+ \\YouSuan\../Core/Src/StepMotor.c\CoordinateSet,0x0A
1
1
- SpeedSet
+ \\YouSuan\../Core/Src/StepMotor.c\SpeedSet
2
1
- ShiftPluse
+ \\YouSuan\../Core/Src/StepMotor.c\ShiftPluse
3
1
- step,0x0A
+ \\YouSuan\../Core/Src/StepMotor.c\PluseCount
4
1
- ADCDataBuf,0x10
+ \\YouSuan\../Core/Src/StepMotor.c\SetPluseCount
5
1
- ADCData
+ \\YouSuan\../Core/Src/StepMotor.c\CoordinatePosition
6
1
- temp,0x0A
+ \\YouSuan\../Core/Src/StepMotor.c\Velocity
7
1
- PluseCount,0x0A
+ \\YouSuan\../Core/Src/YouSuan.c\step
8
1
- SetPluseCount,0x0A
+ \\YouSuan\../Core/Src/YouSuan.c\SetmL
9
1
- xTaskHandles
+ \\YouSuan\../Core/Src/YouSuan.c\slope1
10
1
- temp1
+ \\YouSuan\../Core/Src/YouSuan.c\slope2
11
1
- temp2
+ \\YouSuan\../Core/Src/YouSuan.c\CCRV
12
1
- SetmL
+ UseuL
13
1
- CuiQuFlag
+ \\YouSuan\../Core/Src/YouSuan.c\ADCData
14
1
- ZhongHeFlag
+ \\YouSuan\../Core/Src/YouSuan.c\Blank
15
1
- slope1
+ \\YouSuan\../Core/Src/YouSuan.c\ABSB
16
1
- slope2
+ \\YouSuan\../Core/Src/YouSuan.c\ABSBuf
17
1
- UseuL
+ \\YouSuan\../Core/Src/YouSuan.c\UseuLBuf
+
+
+ 18
+ 1
+ \\YouSuan\../Core/Src/YouSuan.c\UseduL
+
+
+ 19
+ 1
+ \\YouSuan\../Core/Src/YouSuan.c\mg_g
+
+
+ 20
+ 1
+ \\YouSuan\../Core/Src/YouSuan.c\uL_Blank
+
+
+ 21
+ 1
+ \\YouSuan\../Core/Src/YouSuan.c\WeigthSample
+
+
+ 22
+ 1
+ \\YouSuan\../Core/Src/YouSuan.c\HasSample
+
+
+ 23
+ 1
+ \\YouSuan\../Core/Src/YouSuan.c\SetSample
+
+
+ 24
+ 1
+ \\YouSuan\../Core/Src/YouSuan.c\FillFlag
+
+
+ 25
+ 1
+ \\YouSuan\../Core/Src/YouSuan.c\SampleRunFlag
+
+
+ 26
+ 1
+ StateString
+
+
+ 27
+ 1
+ dlteaminCount
+
+
+ 28
+ 1
+ dlteamin
+
+
+ 29
+ 1
+ BufIndex,0x0A
+
+
+ 0
+ 2
+ HasSample
+
+
+ 1
+ 2
+ j
+
+
1
@@ -254,6 +326,30 @@
0
+
+
+ 2
+ 0
+ 0x24018000
+ 0
+
+
+
+
+ 3
+ 0
+ 0x38001000
+ 0
+
+
+
+
+ 4
+ 0
+ 0x24050000
+ 0
+
+
0
@@ -296,6 +392,12 @@
+
+
+ System Viewer\USART1
+ 35905
+
+
1
1
@@ -339,8 +441,8 @@
0
0
0
- ..\Core\Src\StepMotor.c
- StepMotor.c
+ ..\Core\Src\TIM.c
+ TIM.c
0
0
@@ -351,8 +453,8 @@
0
0
0
- ..\Core\Src\TIM.c
- TIM.c
+ ..\Core\Src\StepMotor.c
+ StepMotor.c
0
0
@@ -375,6 +477,18 @@
0
0
0
+ ..\Core\Src\YouSuan.c
+ YouSuan.c
+ 0
+ 0
+
+
+ 2
+ 6
+ 1
+ 0
+ 0
+ 0
../Core/Src/freertos.c
freertos.c
0
@@ -382,7 +496,7 @@
2
- 6
+ 7
1
0
0
@@ -394,7 +508,7 @@
2
- 7
+ 8
1
0
0
@@ -406,7 +520,7 @@
2
- 8
+ 9
1
0
0
@@ -416,6 +530,18 @@
0
0
+
+ 2
+ 10
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Delay.c
+ Delay.c
+ 0
+ 0
+
@@ -426,7 +552,7 @@
0
3
- 9
+ 11
1
0
0
@@ -438,7 +564,7 @@
3
- 10
+ 12
1
0
0
@@ -450,7 +576,7 @@
3
- 11
+ 13
1
0
0
@@ -462,7 +588,7 @@
3
- 12
+ 14
1
0
0
@@ -474,7 +600,7 @@
3
- 13
+ 15
1
0
0
@@ -486,7 +612,7 @@
3
- 14
+ 16
1
0
0
@@ -498,7 +624,7 @@
3
- 15
+ 17
1
0
0
@@ -510,7 +636,7 @@
3
- 16
+ 18
1
0
0
@@ -522,7 +648,7 @@
3
- 17
+ 19
1
0
0
@@ -534,7 +660,7 @@
3
- 18
+ 20
1
0
0
@@ -546,7 +672,7 @@
3
- 19
+ 21
1
0
0
@@ -558,7 +684,7 @@
3
- 20
+ 22
1
0
0
@@ -570,7 +696,7 @@
3
- 21
+ 23
1
0
0
@@ -582,7 +708,7 @@
3
- 22
+ 24
1
0
0
@@ -594,7 +720,7 @@
3
- 23
+ 25
1
0
0
@@ -604,6 +730,18 @@
0
0
+
+ 3
+ 26
+ 1
+ 0
+ 0
+ 0
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c
+ stm32f1xx_hal_uart.c
+ 0
+ 0
+
@@ -614,7 +752,7 @@
0
4
- 24
+ 27
1
0
0
@@ -628,13 +766,13 @@
Middlewares/FreeRTOS
- 1
+ 0
0
0
0
5
- 25
+ 28
1
0
0
@@ -646,7 +784,7 @@
5
- 26
+ 29
1
0
0
@@ -658,7 +796,7 @@
5
- 27
+ 30
1
0
0
@@ -670,7 +808,7 @@
5
- 28
+ 31
1
0
0
@@ -682,7 +820,7 @@
5
- 29
+ 32
1
0
0
@@ -694,7 +832,7 @@
5
- 30
+ 33
1
0
0
@@ -706,7 +844,7 @@
5
- 31
+ 34
1
0
0
@@ -718,7 +856,7 @@
5
- 32
+ 35
1
0
0
@@ -730,7 +868,7 @@
5
- 33
+ 36
1
0
0
@@ -742,9 +880,9 @@
5
- 34
+ 37
1
- 0
+ 1
0
0
../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c
@@ -754,6 +892,146 @@
+
+ Modbus
+ 1
+ 0
+ 0
+ 0
+
+ 6
+ 38
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\functions\mbfunccoils.c
+ mbfunccoils.c
+ 0
+ 0
+
+
+ 6
+ 39
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\functions\mbfuncdiag.c
+ mbfuncdiag.c
+ 0
+ 0
+
+
+ 6
+ 40
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\functions\mbfuncdisc.c
+ mbfuncdisc.c
+ 0
+ 0
+
+
+ 6
+ 41
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\functions\mbfuncholding.c
+ mbfuncholding.c
+ 0
+ 0
+
+
+ 6
+ 42
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\functions\mbfuncinput.c
+ mbfuncinput.c
+ 0
+ 0
+
+
+ 6
+ 43
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\functions\mbfuncother.c
+ mbfuncother.c
+ 0
+ 0
+
+
+ 6
+ 44
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\functions\mbutils.c
+ mbutils.c
+ 0
+ 0
+
+
+ 6
+ 45
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\rtu\mbcrc.c
+ mbcrc.c
+ 0
+ 0
+
+
+ 6
+ 46
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\rtu\mbrtu.c
+ mbrtu.c
+ 0
+ 0
+
+
+ 6
+ 47
+ 1
+ 0
+ 0
+ 0
+ ..\Core\Src\Modbus\mb.c
+ mb.c
+ 0
+ 0
+
+
+ 6
+ 48
+ 1
+ 1
+ 0
+ 0
+ ..\Core\Src\Modbus\MODBUS-Port-STM32.C
+ MODBUS-Port-STM32.C
+ 0
+ 0
+
+
+
::CMSIS
0
diff --git a/MDK-ARM/YouSuan.uvprojx b/MDK-ARM/YouSuan.uvprojx
index cd8fa45..4db4c9b 100644
--- a/MDK-ARM/YouSuan.uvprojx
+++ b/MDK-ARM/YouSuan.uvprojx
@@ -116,8 +116,8 @@
-pCM3
SARMCM3.DLL
- TCM.DLL
- -pCM3
+ TARMSTM.DLL
+ -pSTM32F103RC
@@ -191,7 +191,7 @@
0
0
8
- 0
+ 1
0
0
0
@@ -339,7 +339,7 @@
0
- USE_HAL_DRIVER,STM32F103xE
+ USE_HAL_DRIVER,STM32F103xE,RTE_COMPONENTS_H,NDEBUG
../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Middlewares/Third_Party/FreeRTOS/Source/include;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM3;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include
@@ -395,21 +395,26 @@
Application/User/Core
-
- StepMotor.c
- 1
- ..\Core\Src\StepMotor.c
-
TIM.c
1
..\Core\Src\TIM.c
+
+ StepMotor.c
+ 1
+ ..\Core\Src\StepMotor.c
+
main.c
1
../Core/Src/main.c
+
+ YouSuan.c
+ 1
+ ..\Core\Src\YouSuan.c
+
freertos.c
1
@@ -481,6 +486,11 @@
+
+ Delay.c
+ 1
+ ..\Core\Src\Delay.c
+
@@ -561,6 +571,11 @@
1
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c
+
+ stm32f1xx_hal_uart.c
+ 1
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c
+
@@ -628,6 +643,135 @@
+
+ Modbus
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+ ..\Core\Src\Modbus;..\Core\Src\Modbus\include;..\Core\Src\Modbus\port-stm32;..\Core\Src\Modbus\rtu
+
+
+
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ mbfunccoils.c
+ 1
+ ..\Core\Src\Modbus\functions\mbfunccoils.c
+
+
+ mbfuncdiag.c
+ 1
+ ..\Core\Src\Modbus\functions\mbfuncdiag.c
+
+
+ mbfuncdisc.c
+ 1
+ ..\Core\Src\Modbus\functions\mbfuncdisc.c
+
+
+ mbfuncholding.c
+ 1
+ ..\Core\Src\Modbus\functions\mbfuncholding.c
+
+
+ mbfuncinput.c
+ 1
+ ..\Core\Src\Modbus\functions\mbfuncinput.c
+
+
+ mbfuncother.c
+ 1
+ ..\Core\Src\Modbus\functions\mbfuncother.c
+
+
+ mbutils.c
+ 1
+ ..\Core\Src\Modbus\functions\mbutils.c
+
+
+ mbcrc.c
+ 1
+ ..\Core\Src\Modbus\rtu\mbcrc.c
+
+
+ mbrtu.c
+ 1
+ ..\Core\Src\Modbus\rtu\mbrtu.c
+
+
+ mb.c
+ 1
+ ..\Core\Src\Modbus\mb.c
+
+
+ MODBUS-Port-STM32.C
+ 1
+ ..\Core\Src\Modbus\MODBUS-Port-STM32.C
+
+
+
::CMSIS