已正常实验

This commit is contained in:
Kaiser 2026-03-17 10:35:31 +08:00
parent 68a835987f
commit 4fc6228ab9
9 changed files with 1503 additions and 417 deletions

View File

@ -64,7 +64,7 @@
#define configTICK_RATE_HZ ((TickType_t)1000) #define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 56 ) #define configMAX_PRIORITIES ( 56 )
#define configMINIMAL_STACK_SIZE ((uint16_t)128) #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 configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 1 #define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0

View File

@ -4,22 +4,53 @@
//extern void delay_us(uint32_t us); //extern void delay_us(uint32_t us);
#include "stdlib.h" #include "stdlib.h"
#include "math.h" #include "math.h"
#include "stdio.h"
#include "string.h "
//#include "MBM.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 MAX6675_Init(void);
extern void BIOS_GPIO_Init( void ); extern void BIOS_GPIO_Init( void );
extern void BIOS_TIM8_Init( void ); extern void BIOS_TIM8_Init( void );
extern void BIOS_TIM5_Init( void ); extern void BIOS_TIM5_Init( void );
extern void USARTHMIInit( void ); extern void USARTHMIInit( void );
extern void TIM4_CH1_CTRL(uint16_t ARRValue, uint16_t CCRValue ); extern void TIM3_CH1_CTRL(uint16_t ARRValue, uint16_t CCRValue );
extern void TIM4_CH1_CMD( _Bool CMD ); extern void TIM3_CH1_CMD( _Bool CMD );
extern void TIM4_CH1_DIR( _Bool CMD ); extern void TIM3_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_IECMD( _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 enum enumPumpSelect
@ -35,13 +66,24 @@ enum enumPumpSelect
}; };
extern enum enumPumpSelect PumpSelect[pumpMax]; 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 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 SolidValve_H2SO4( uint8_t channel, _Bool state );
extern void AirValve_Pump(_Bool state); extern void AirValve_Pump(_Bool state);
extern void StandardValve_Pump( _Bool state); extern void StandardValve_Pump( _Bool state);
extern void MotorZero_Init( enum enumPumpSelect Select);
extern void MotorCTRLInitiate( void ); extern void MotorCTRLInitiate( void );
extern _Bool FindZero[pumpMax];
extern float Temperature[6]; extern float Temperature[6];
#include "stdio.h" #include "stdio.h"

View File

@ -1,4 +1,5 @@
#include "APPDEF.H" #include "APPDEF.H"
#include "stm32f10x.h"
enum enumPumpSelect PumpSelect[pumpMax]; enum enumPumpSelect PumpSelect[pumpMax];
@ -10,12 +11,14 @@ void Motor_IECMD( enum enumPumpSelect Select, _Bool CMD )
switch( Select ) switch( Select )
{ {
case M1: case M1:
TIM4_IECMD( CMD ); TIM5_IECMD( CMD );
break; break;
case M2: case M2:
TIM3_IECMD( CMD ); TIM3_IECMD( CMD );
break; break;
case M3:
default: default:
TIM2_IECMD( CMD );
break; break;
} }
@ -31,11 +34,16 @@ void Motor_PWM( enum enumPumpSelect Select, uint16_t Value )
{ {
switch( Select ) switch( Select )
{ {
case M1: case M1:
TIM4_CH1_CTRL( Value, Value / 2 ); TIM5_CH3_CTRL( Value, Value / 2 );
break; break;
case M2: case M2:
TIM3_CH2_CTRL( Value, Value / 2 ); TIM3_CH1_CTRL( Value, Value / 2 );
break;
case M3:
TIM2_CH2_CTRL( Value, Value / 2 );
break; break;
default: default:
break; break;
@ -50,10 +58,13 @@ void Motor_PWMCmd( enum enumPumpSelect Select, _Bool State )
switch( Select ) switch( Select )
{ {
case M1: case M1:
TIM4_CH1_CMD( State ); TIM5_CH3_CMD( State );
break; break;
case M2: case M2:
TIM3_CH2_CMD( State ); TIM3_CH1_CMD( State );
break;
case M3:
TIM2_CH2_CMD( State );
break; break;
default: default:
break; break;
@ -68,7 +79,23 @@ void Motor_Dir( enum enumPumpSelect Select, _Bool State )
switch( Select ) switch( Select )
{ {
case M1: 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; break;
default: default:
break; break;
@ -91,38 +118,46 @@ void Motor_En( enum enumPumpSelect Select, _Bool State )
/******************************** 功能说明 ************************************* /******************************** 功能说明 *************************************
* TIMx * TIMx
*******************************************************************************/ *******************************************************************************/
volatile uint32_t SetPluseCount[7u]; // 设置运行脉冲数 volatile uint32_t SetPluseCount[7u]; // 设置运行脉冲数
volatile uint32_t PluseCount[7u]; // 实际运行脉冲数 volatile uint32_t PluseCount[7u]; // 实际运行脉冲数
volatile _Bool CountOver[7u] = {false}; // 计数器溢出标志 volatile _Bool CountOver[7u] = {false}; // 计数器溢出标志
volatile uint32_t SamplePumpSetPluseCount[7u]; // 设置运行脉冲数 volatile uint32_t SamplePumpSetPluseCount[7u]; // 设置运行脉冲数
volatile uint32_t SamplePumpPluseCount[7u]; // 实际运行脉冲数 volatile uint32_t SamplePumpPluseCount[7u]; // 实际运行脉冲数
volatile _Bool SamplePumpCountOver[7u] = {false}; // 计数器溢出标志 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]; // 本次运行起始位置 const int32_t FullCoordinate[pumpMax] = { 20500u, 65000u,125000u }; // 最大行程限制
_Bool TaskisRunning[pumpMax] = {0}; // 防止重入标志 const float ShiftPluse[pumpMax]={ 100.0f, 1500.0f, 1500.0f }; // 标准最大加速过程脉冲数限制
_Bool IdelEn[pumpMax] = { false,false,false}; // 电机空闲使能 const float VelocityH[pumpMax]={ 10000.0f, 5000.0f, 20000.0f }; // 最高速度限制p/s
int32_t DCMotorSpeed[pumpMax]; // 直流电机速度 const float VelocityL[pumpMax]={ 10.0f, 1000.0f, 1000.0f }; // 最低速度限制p/s
uint32_t CoordinateSetOld[pumpMax]; // 上次所在位置
//外部程序调用所需修改参数
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}; // 电机空闲使能
// 程序运行时自动更新的参数
int32_t CoordinatePosition[pumpMax]; // 实时更新实时位置
int32_t Differ[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实时周期 uint32_t period[pumpMax] = { 20000u, 2000u, 2000u }; // PWM实时周期
float Velocity[pumpMax] = { 0.0f, 20.0f, 20.0f }; // 实时速度 uint32_t CoordinateSetOld[pumpMax]; // 上次所在位置
uint32_t Shifting[pumpMax] = { 500u, 500u, 500u }; // 加速过程脉冲数 uint32_t Position[pumpMax]; // 本次运行起始位置
float Speeda[pumpMax] ={ 10000.0f, 10000.0f, 10000.0f }; // 加速度 p/(s*s) float Speeda[pumpMax] ={ 10000.0f, 10000.0f, 10000.0f }; // 加速度 p/(s*s)
float VelocityH[pumpMax]={ 10000.0f, 5000.0f, 5000.0f }; // 最高速度p/s float Velocity[pumpMax] = { 0.0f, 20.0f, 20.0f }; // 实时速度
float VelocityL[pumpMax]={ 10.0f, 1000.0f, 1000.0f }; // 最低速度p/s float VelocityMax[pumpMax] = { 10000.0f, 20.0f, 20.0f }; // 最大速度
float ShiftPluse[pumpMax]={ 100.0f, 1500.0f, 1500.0f }; // 标准最大加速过程脉冲数 _Bool Direction[pumpMax] = { false,false,false}; // 运行方向
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 SpeedMode[pumpMax];
_Bool PositionMode[pumpMax]; _Bool PositionMode[pumpMax];
_Bool FindZero[pumpMax]; _Bool FindZero[pumpMax];
@ -236,6 +274,7 @@ void SamplePumpCtrl( enum enumPumpSelect Select )
TaskisRunning[Select] = false; // 清除防重入标志 TaskisRunning[Select] = false; // 清除防重入标志
CountOver[Select] = false; // 清除计数器溢出 CountOver[Select] = false; // 清除计数器溢出
osDelay( 15u ); osDelay( 15u );
// osSemaphoreRelease(SampleRunFinish);
} }
else else
{ {
@ -262,6 +301,7 @@ void ArmSoftCtrl( enum enumPumpSelect Select )
) )
) )
{ {
SamplePumpSpeed_AcceleratedConver(Select,SpeedSet[Select]);
TaskisRunning[Select] = true; // 置位 防重入标志 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)); Velocity[Select] = sqrt( 2* (abs(Differ[Select]) - (float)PluseCount[Select]) * (Speeda[Select] / 2u));
if( VelocityMax[Select] < Velocity[Select] ) if( VelocityMax[Select] < Velocity[Select] )
VelocityMax[Select] = Velocity[Select]; VelocityMax[Select] = Velocity[Select];
@ -340,6 +381,10 @@ void ArmSoftCtrl( enum enumPumpSelect Select )
period[Select] = 1000000.0f / Velocity[Select]; period[Select] = 1000000.0f / Velocity[Select];
Motor_PWM( Select, period[Select] ); Motor_PWM( Select, period[Select] );
} }
else
{
__NOP();
}
osDelay( 1u ); osDelay( 1u );
if( Differ[Select] >= 0 ) // 根据方向偏差来计算当前位置 if( Differ[Select] >= 0 ) // 根据方向偏差来计算当前位置
@ -366,6 +411,8 @@ void ArmSoftCtrl( enum enumPumpSelect Select )
TaskisRunning[Select] = false; // 清除防重入标志 TaskisRunning[Select] = false; // 清除防重入标志
CountOver[Select] = false; // 清除计数器溢出 CountOver[Select] = false; // 清除计数器溢出
osDelay( 5u ); osDelay( 5u );
// osSemaphoreRelease(ArmRunFinish);
} }
else else
{ {
@ -382,6 +429,8 @@ void MotorCtrl(enum enumPumpSelect Select)
{ {
// static _Bool SpeedModeOld[pumpMax]; // static _Bool SpeedModeOld[pumpMax];
// static _Bool PositionModeOld[pumpMax]; // static _Bool PositionModeOld[pumpMax];
// ArmRunFinish = osSemaphoreNew( 1,0,NULL);
// SampleRunFinish = osSemaphoreNew( 1,0,NULL);
for(;;) 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; uint16_t iz = 0;
void EXTI1_IRQHandler( void ) //void EXTI0_IRQHandler( void )
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{ {
iz++; iz++;
SET_BIT( EXTI->PR, 0x01u << 1 ); // 写1复位中断标志位 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 ); EXTIx_IRQ_Disable( 0 );
Motor_PWMCmd(M1, false ); Motor_PWMCmd(M3, false );
CoordinateSet[M1] = 0u; CoordinateSet[M3] = 0u;
CoordinatePosition[M1] = 0; CoordinatePosition[M3] = 0;
} }
} }
else 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); osDelay(400);
Motor_PWMCmd(M1, false ); Motor_PWMCmd(M3, false );
if(CoordinateSet[M1] >0) if(CoordinateSet[M3] >0)
CoordinatePosition[M1] = 1; CoordinatePosition[M3] = 1;
else else
CoordinatePosition[M1] = -1; CoordinatePosition[M3] = -1;
CoordinateSet[M1] = 0u; CoordinateSet[M1] = 0u;
} }
@ -553,8 +528,8 @@ _Bool Exti_IOStateRead( enum enumPumpSelect Select )
_Bool state = false; _Bool state = false;
switch (Select) switch (Select)
{ {
case M1: case M3:
state = READ_BIT( GPIOB->IDR, GPIO_IDR_IDR1); state = READ_BIT( GPIOC->IDR, GPIO_IDR_IDR0);
break; break;
default: default:
break; break;
@ -565,8 +540,8 @@ void Exti_IRQ_Ctrl( enum enumPumpSelect Select, _Bool State )
{ {
switch (Select) switch (Select)
{ {
case M1: case M3:
State? EXTIx_IRQ_Enable(1) : EXTIx_IRQ_Disable(1); State? EXTIx_IRQ_Enable(0) : EXTIx_IRQ_Disable(0);
break; break;
default: default:
@ -575,7 +550,6 @@ void Exti_IRQ_Ctrl( enum enumPumpSelect Select, _Bool State )
} }
void MotorZero_Init( enum enumPumpSelect Select) void MotorZero_Init( enum enumPumpSelect Select)
{ {
SET_BIT( GPIOA->BSRR, GPIO_BSRR_BS5 );
FindedZero[Select] =false; FindedZero[Select] =false;
EXTIx_IRQ_Disable(0); EXTIx_IRQ_Disable(0);
Motor_PWMCmd( Select, false ); Motor_PWMCmd( Select, false );
@ -585,7 +559,9 @@ void MotorZero_Init( enum enumPumpSelect Select)
Motor_Dir( Select, true ); Motor_Dir( Select, true );
osDelay(10u); osDelay(10u);
Motor_IECMD( Select, false ); Motor_IECMD( Select, false );
DCMotor_PWM( Select, 55 ); Motor_PWM( Select, 200 );
// DCMotor_PWM( Select, 55 );
if( !Exti_IOStateRead(Select) ) if( !Exti_IOStateRead(Select) )
{ {
Motor_Dir( Select, false ); Motor_Dir( Select, false );
@ -612,11 +588,10 @@ void MotorZero_Init( enum enumPumpSelect Select)
Direction[Select] = false; Direction[Select] = false;
FindedZero[Select] =true; FindedZero[Select] =true;
// RegCoilsBufRst( (22u+Select*3u) ); // RegCoilsBufRst( (22u+Select*3u) );
usRegHoldingBuf[43] = 0; /*usRegHoldingBuf[43] = 0;
usRegInputBuf[43] = 2; usRegInputBuf[43] = 2;
usRegHoldingBuf[7] = CoordinateSet[Select] = 0; usRegHoldingBuf[7] =*/ CoordinateSet[Select] = 0;
ArmInitIsRuning[Select] = FindZero[Select] = false; ArmInitIsRuning[Select] = FindZero[Select] = false;
SET_BIT( GPIOA->BSRR, GPIO_BSRR_BR5 );
} }
@ -633,25 +608,26 @@ osThreadId_t MName[pumpMax];
TaskHandle_t xTaskHandles[pumpMax]; TaskHandle_t xTaskHandles[pumpMax];
void MotorCTRLInitiate( void ) void MotorCTRLInitiate( void )
{ {
SamplePumpSpeed_AcceleratedConver(M1,100); SamplePumpSpeed_AcceleratedConver(M1,20); //中和泵
SamplePumpSpeed_AcceleratedConver(M2,1000); SamplePumpSpeed_AcceleratedConver(M2,1000); // 萃取泵
SamplePumpSpeed_AcceleratedConver(M3,100); SamplePumpSpeed_AcceleratedConver(M3,20000); // 转盘电机
temp1 = xTaskCreate(_task_MotorCTRL, // 任务函数 temp1 = xTaskCreate(_task_MotorCTRL, // 任务函数
"TaskName1", // 任务名(用于调试) "TaskName1", // 任务名(用于调试)
512, // 堆栈大小(以堆栈类型的大小为单位) 256, // 堆栈大小(以堆栈类型的大小为单位)
(void *)M1, // 传递给任务的参数 (void *)M1, // 传递给任务的参数
osPriorityNormal, // 任务优先级(根据需要调整) osPriorityNormal, // 任务优先级(根据需要调整)
&xTaskHandles[M1]); // 任务句柄的地址(用于引用) &xTaskHandles[M1]); // 任务句柄的地址(用于引用)
temp2 = xTaskCreate(_task_MotorCTRL, // 任务函数 temp2 = xTaskCreate(_task_MotorCTRL, // 任务函数
"TaskName2", // 任务名(用于调试) "TaskName2", // 任务名(用于调试)
512, // 堆栈大小(以堆栈类型的大小为单位) 256, // 堆栈大小(以堆栈类型的大小为单位)
(void *)M2, // 传递给任务的参数 (void *)M2, // 传递给任务的参数
osPriorityNormal, // 任务优先级(根据需要调整) osPriorityNormal, // 任务优先级(根据需要调整)
&xTaskHandles[M2]); // 任务句柄的地址(用于引用) &xTaskHandles[M2]); // 任务句柄的地址(用于引用)
temp3 = xTaskCreate(_task_MotorCTRL, // 任务函数 temp3 = xTaskCreate(_task_MotorCTRL, // 任务函数
"TaskName3", // 任务名(用于调试) "TaskName3", // 任务名(用于调试)
512, // 堆栈大小(以堆栈类型的大小为单位) 256, // 堆栈大小(以堆栈类型的大小为单位)
(void *)M3, // 传递给任务的参数 (void *)M3, // 传递给任务的参数
osPriorityNormal, // 任务优先级(根据需要调整) osPriorityNormal, // 任务优先级(根据需要调整)
&xTaskHandles[M3]); // 任务句柄的地址(用于引用) &xTaskHandles[M3]); // 任务句柄的地址(用于引用)

View File

@ -3,84 +3,54 @@
#include "stm32f10x.h" #include "stm32f10x.h"
#include "cmsis_os.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; // 设置预装载 TIM5->ARR = ARRValue; // 设置预装载
TIM4->CCR1 = CCRValue; // 设置翻转值 TIM5->CCR3 = CCRValue; // 设置翻转值
} }
/******************************** 功能说明 ************************************* /******************************** 功能说明 *************************************
* TIM4->CH3 PWM开关 * TIM5->CH3 PWM开关
*******************************************************************************/ *******************************************************************************/
void TIM4_CH1_CMD( _Bool CMD ) void TIM5_CH3_CMD( _Bool CMD )
{ {
if( CMD ) if( CMD )
{ {
SET_BIT( TIM4->CR1,TIM_CR1_CEN ); SET_BIT( TIM5->CR1,TIM_CR1_CEN );
SET_BIT( TIM4->CCER,TIM_CCER_CC1E ); SET_BIT( TIM5->CCER,TIM_CCER_CC3E );
} }
else else
{ {
CLEAR_BIT( TIM4->CCER,TIM_CCER_CC1E ); CLEAR_BIT( TIM5->CCER,TIM_CCER_CC3E );
CLEAR_BIT( TIM4->CR1,TIM_CR1_CEN ); CLEAR_BIT( TIM5->CR1,TIM_CR1_CEN );
} }
} }
/******************************** 功能说明 ************************************* /******************************** 功能说明 *************************************
* DIR * 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 ) if( CMD )
{ {
SET_BIT(TIM4->DIER, TIM_DIER_CC1IE); // 使能中断 SET_BIT(TIM5->DIER, TIM_DIER_CC3IE); // 使能中断
CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // 清除中断标记 CLEAR_BIT( TIM5->SR, TIM_SR_UIF | TIM_SR_CC3IF ); // 清除中断标记
} }
else else
{ {
CLEAR_BIT(TIM4->DIER,TIM_DIER_CC1IE); // 失能中断 CLEAR_BIT(TIM5->DIER,TIM_DIER_CC3IE); // 失能中断
CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // 清除中断标记 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->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 ) if( CMD )
{ {
SET_BIT( TIM3->CR1,TIM_CR1_CEN ); SET_BIT( TIM3->CR1,TIM_CR1_CEN );
SET_BIT( TIM3->CCER,TIM_CCER_CC2E ); SET_BIT( TIM3->CCER,TIM_CCER_CC1E );
} }
else else
{ {
CLEAR_BIT( TIM3->CCER,TIM_CCER_CC2E ); CLEAR_BIT( TIM3->CCER,TIM_CCER_CC1E );
CLEAR_BIT( TIM3->CR1, TIM_CR1_CEN ); CLEAR_BIT( TIM3->CR1, TIM_CR1_CEN );
} }
} }
@ -139,13 +109,74 @@ void TIM3_IECMD( _Bool CMD )
{ {
if( CMD ) if( CMD )
{ {
SET_BIT(TIM3->DIER, TIM_DIER_CC2IE); // 使能中断 SET_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 ); // 清除中断标记
} }
else else
{ {
CLEAR_BIT(TIM3->DIER,TIM_DIER_CC1IE); // 失能中断 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 ); // 清除中断标记
} }
} }

View File

@ -44,14 +44,19 @@
ADC_HandleTypeDef hadc1; ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef hdma_adc1; DMA_HandleTypeDef hdma_adc1;
TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim3; TIM_HandleTypeDef htim3;
TIM_HandleTypeDef htim4; TIM_HandleTypeDef htim5;
TIM_HandleTypeDef htim8;
UART_HandleTypeDef huart1;
UART_HandleTypeDef huart3;
/* Definitions for defaultTask */ /* Definitions for defaultTask */
osThreadId_t defaultTaskHandle; osThreadId_t defaultTaskHandle;
const osThreadAttr_t defaultTask_attributes = { const osThreadAttr_t defaultTask_attributes = {
.name = "defaultTask", .name = "defaultTask",
.stack_size = 128 * 4, .stack_size = 128 * 6,
.priority = (osPriority_t) osPriorityNormal, .priority = (osPriority_t) osPriorityNormal,
}; };
/* USER CODE BEGIN PV */ /* USER CODE BEGIN PV */
@ -64,7 +69,11 @@ static void MX_GPIO_Init(void);
static void MX_DMA_Init(void); static void MX_DMA_Init(void);
static void MX_ADC1_Init(void); static void MX_ADC1_Init(void);
static void MX_TIM3_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); void StartDefaultTask(void *argument);
/* USER CODE BEGIN PFP */ /* USER CODE BEGIN PFP */
@ -73,8 +82,28 @@ void StartDefaultTask(void *argument);
/* Private user code ---------------------------------------------------------*/ /* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */ /* 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 */ /* USER CODE END 0 */
/** /**
@ -85,8 +114,6 @@ int main(void)
{ {
/* USER CODE BEGIN 1 */ /* USER CODE BEGIN 1 */
/* USER CODE END 1 */ /* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/ /* MCU Configuration--------------------------------------------------------*/
@ -110,9 +137,14 @@ int main(void)
MX_DMA_Init(); MX_DMA_Init();
MX_ADC1_Init(); MX_ADC1_Init();
MX_TIM3_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 */ /* USER CODE BEGIN 2 */
__HAL_TIM_SetCompare(&htim8,TIM_CHANNEL_1,0);
HAL_TIM_PWM_Start( &htim8, TIM_CHANNEL_1);
/* USER CODE END 2 */ /* USER CODE END 2 */
/* Init scheduler */ /* Init scheduler */
@ -229,12 +261,12 @@ static void MX_ADC1_Init(void)
/** Common config /** Common config
*/ */
hadc1.Instance = ADC1; hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
hadc1.Init.ContinuousConvMode = ENABLE; hadc1.Init.ContinuousConvMode = ENABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1; hadc1.Init.NbrOfConversion = 16;
if (HAL_ADC_Init(&hadc1) != HAL_OK) if (HAL_ADC_Init(&hadc1) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
@ -242,19 +274,199 @@ static void MX_ADC1_Init(void)
/** Configure Regular Channel /** Configure Regular Channel
*/ */
sConfig.Channel = ADC_CHANNEL_0; sConfig.Channel = ADC_CHANNEL_8;
sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5; sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{ {
Error_Handler(); 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 BEGIN ADC1_Init 2 */
/* USER CODE END 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 * @brief TIM3 Initialization Function
* @param None * @param None
@ -303,7 +515,7 @@ static void MX_TIM3_Init(void)
sConfigOC.Pulse = 499; sConfigOC.Pulse = 499;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; 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(); Error_Handler();
} }
@ -315,46 +527,36 @@ static void MX_TIM3_Init(void)
} }
/** /**
* @brief TIM4 Initialization Function * @brief TIM5 Initialization Function
* @param None * @param None
* @retval 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_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0}; TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM4_Init 1 */ /* USER CODE BEGIN TIM5_Init 1 */
/* USER CODE END TIM4_Init 1 */ /* USER CODE END TIM5_Init 1 */
htim4.Instance = TIM4; htim5.Instance = TIM5;
htim4.Init.Prescaler = 72; htim5.Init.Prescaler = 72;
htim4.Init.CounterMode = TIM_COUNTERMODE_UP; htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
htim4.Init.Period = 999; htim5.Init.Period = 999;
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim4) != HAL_OK) if (HAL_TIM_PWM_Init(&htim5) != 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)
{ {
Error_Handler(); Error_Handler();
} }
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
} }
@ -362,14 +564,155 @@ static void MX_TIM4_Init(void)
sConfigOC.Pulse = 499; sConfigOC.Pulse = 499;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; 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(); Error_Handler();
} }
/* USER CODE BEGIN TIM4_Init 2 */ /* USER CODE BEGIN TIM5_Init 2 */
/* USER CODE END TIM4_Init 2 */ /* USER CODE END TIM5_Init 2 */
HAL_TIM_MspPostInit(&htim4); 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) static void MX_GPIO_Init(void)
{ {
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */ /* GPIO Ports Clock Enable */
__HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_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 BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */
} }
/* USER CODE BEGIN 4 */ /* USER CODE BEGIN 4 */
float ADCData; extern void YouSuanRun( void );
float slope1,slope2;
float SetmL,UseuL;
_Bool CuiQuFlag = false;
_Bool ZhongHeFlag = false;
/* USER CODE END 4 */ /* USER CODE END 4 */
@ -434,47 +820,11 @@ void StartDefaultTask(void *argument)
{ {
/* USER CODE BEGIN 5 */ /* USER CODE BEGIN 5 */
/* Infinite loop */ /* 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_ADCEx_Calibration_Start(&hadc1);
HAL_ADC_Start_DMA( &hadc1,ADCDataBuf,20); HAL_ADC_Start_DMA( &hadc1,ADCDataBuf,16);
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;
}
ADCData = ( YouSuanRun();
(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;
// if(CoordinateSet[0] == 0)
// CoordinateSet[0] = step;
}
/* USER CODE END 5 */ /* USER CODE END 5 */
} }

View File

@ -60,7 +60,7 @@ extern DMA_HandleTypeDef hdma_adc1;
/* USER CODE END 0 */ /* USER CODE END 0 */
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
/** /**
* Initializes the Global MSP. * Initializes the Global MSP.
*/ */
void HAL_MspInit(void) void HAL_MspInit(void)
@ -103,13 +103,14 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
/* Peripheral clock enable */ /* Peripheral clock enable */
__HAL_RCC_ADC1_CLK_ENABLE(); __HAL_RCC_ADC1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE();
/**ADC1 GPIO Configuration /**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; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* ADC1 DMA Init */ /* ADC1 DMA Init */
/* ADC1 Init */ /* ADC1 Init */
@ -120,7 +121,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
hdma_adc1.Init.Mode = DMA_CIRCULAR; 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) if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
@ -153,9 +154,10 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
__HAL_RCC_ADC1_CLK_DISABLE(); __HAL_RCC_ADC1_CLK_DISABLE();
/**ADC1 GPIO Configuration /**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 */ /* ADC1 DMA DeInit */
HAL_DMA_DeInit(hadc->DMA_Handle); 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) 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 */ /* 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 */ /* 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 */ /* Peripheral clock enable */
__HAL_RCC_TIM4_CLK_ENABLE(); __HAL_RCC_TIM8_CLK_ENABLE();
/* TIM4 interrupt Init */ /* USER CODE BEGIN TIM8_MspInit 1 */
HAL_NVIC_SetPriority(TIM4_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(TIM4_IRQn); /* USER CODE END TIM8_MspInit 1 */
/* USER CODE BEGIN TIM4_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) void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
{ {
GPIO_InitTypeDef GPIO_InitStruct = {0}; 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 BEGIN TIM3_MspPostInit 0 */
/* USER CODE END TIM3_MspPostInit 0 */ /* USER CODE END TIM3_MspPostInit 0 */
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/**TIM3 GPIO Configuration /**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.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
__HAL_AFIO_REMAP_TIM3_PARTIAL();
/* USER CODE BEGIN TIM3_MspPostInit 1 */ /* USER CODE BEGIN TIM3_MspPostInit 1 */
/* USER CODE END 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(); __HAL_RCC_GPIOA_CLK_ENABLE();
/**TIM4 GPIO Configuration /**TIM5 GPIO Configuration
PB6 ------> TIM4_CH1 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.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 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) 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 */ /* 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 */ /* 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 */ /* Peripheral clock disable */
__HAL_RCC_TIM4_CLK_DISABLE(); __HAL_RCC_TIM8_CLK_DISABLE();
/* USER CODE BEGIN TIM8_MspDeInit 1 */
/* TIM4 interrupt DeInit */ /* USER CODE END TIM8_MspDeInit 1 */
HAL_NVIC_DisableIRQ(TIM4_IRQn); }
/* USER CODE BEGIN TIM4_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 */
} }
} }

View File

@ -25,8 +25,9 @@
extern volatile uint32_t SetPluseCount[7u]; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> extern volatile uint32_t SetPluseCount[7u]; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern volatile uint32_t PluseCount[7u]; // ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> extern volatile uint32_t PluseCount[7u]; // ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern volatile _Bool CountOver[7u]; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ extern volatile _Bool CountOver[7u]; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
extern void TIM3_CH2_CMD( _Bool CMD ); extern void TIM3_CH1_CMD( _Bool CMD );
extern void TIM4_CH1_CMD( _Bool CMD ); extern void TIM5_CH3_CMD( _Bool CMD );
extern void TIM2_CH2_CMD( _Bool CMD );
/* USER CODE END Includes */ /* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/
@ -61,8 +62,9 @@ extern void TIM4_CH1_CMD( _Bool CMD );
/* External variables --------------------------------------------------------*/ /* External variables --------------------------------------------------------*/
extern DMA_HandleTypeDef hdma_adc1; extern DMA_HandleTypeDef hdma_adc1;
extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim3; extern TIM_HandleTypeDef htim3;
extern TIM_HandleTypeDef htim4; extern TIM_HandleTypeDef htim5;
extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim1;
/* USER CODE BEGIN EV */ /* USER CODE BEGIN EV */
@ -167,6 +169,20 @@ void DebugMon_Handler(void)
/* please refer to the startup file (startup_stm32f1xx.s). */ /* 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. * @brief This function handles DMA1 channel1 global interrupt.
*/ */
@ -195,6 +211,29 @@ void TIM1_UP_IRQHandler(void)
/* USER CODE END TIM1_UP_IRQn 1 */ /* 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 ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1>
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 ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1>
}
/* USER CODE END TIM2_IRQn 1 */
}
/** /**
* @brief This function handles TIM3 global interrupt. * @brief This function handles TIM3 global interrupt.
*/ */
@ -205,39 +244,39 @@ void TIM3_IRQHandler(void)
/* USER CODE END TIM3_IRQn 0 */ /* USER CODE END TIM3_IRQn 0 */
HAL_TIM_IRQHandler(&htim3); HAL_TIM_IRQHandler(&htim3);
/* USER CODE BEGIN TIM3_IRQn 1 */ /* USER CODE BEGIN TIM3_IRQn 1 */
CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1> CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1>
if( PluseCount[1u] < SetPluseCount[1u] ) if( PluseCount[1u] < SetPluseCount[1u] )
PluseCount[1u] ++; PluseCount[1u] ++;
else else
{ {
TIM3_CH2_CMD( 0 ); TIM3_CH1_CMD( 0 );
CountOver[1u] = 1; CountOver[1u] = 1;
CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1> CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1>
} }
/* USER CODE END TIM3_IRQn 1 */ /* 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 */ /* USER CODE END TIM5_IRQn 0 */
HAL_TIM_IRQHandler(&htim4); HAL_TIM_IRQHandler(&htim5);
/* USER CODE BEGIN TIM4_IRQn 1 */ /* USER CODE BEGIN TIM5_IRQn 1 */
CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1> CLEAR_BIT( TIM5->SR, TIM_SR_UIF | TIM_SR_CC3IF ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1>
if( PluseCount[0u] < SetPluseCount[0u] ) if( PluseCount[0u] < SetPluseCount[0u] )
PluseCount[0u] ++; PluseCount[0u] ++;
else else
{ {
TIM4_CH1_CMD( 0 ); TIM5_CH3_CMD( 0 );
CountOver[0u] = 1; CountOver[0u] = 1;
CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1> CLEAR_BIT( TIM5->SR, TIM_SR_UIF | TIM_SR_CC3IF ); // <09><><EFBFBD><EFBFBD>жϱ<D0B6><CFB1>
} }
/* USER CODE END TIM4_IRQn 1 */ /* USER CODE END TIM5_IRQn 1 */
} }
/* USER CODE BEGIN 1 */ /* USER CODE BEGIN 1 */

View File

@ -130,7 +130,7 @@
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>DLGTARM</Key> <Key>DLGTARM</Key>
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)</Name> <Name>(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)</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
@ -145,7 +145,7 @@
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>CMSIS_AGDI</Key> <Key>CMSIS_AGDI</Key>
<Name>-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)</Name> <Name>-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)</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
@ -158,94 +158,166 @@
<Ww> <Ww>
<count>0</count> <count>0</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>CoordinateSet,0x0A</ItemText> <ItemText>\\YouSuan\../Core/Src/StepMotor.c\CoordinateSet,0x0A</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>1</count> <count>1</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>SpeedSet</ItemText> <ItemText>\\YouSuan\../Core/Src/StepMotor.c\SpeedSet</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>2</count> <count>2</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>ShiftPluse</ItemText> <ItemText>\\YouSuan\../Core/Src/StepMotor.c\ShiftPluse</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>3</count> <count>3</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>step,0x0A</ItemText> <ItemText>\\YouSuan\../Core/Src/StepMotor.c\PluseCount</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>4</count> <count>4</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>ADCDataBuf,0x10</ItemText> <ItemText>\\YouSuan\../Core/Src/StepMotor.c\SetPluseCount</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>5</count> <count>5</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>ADCData</ItemText> <ItemText>\\YouSuan\../Core/Src/StepMotor.c\CoordinatePosition</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>6</count> <count>6</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>temp,0x0A</ItemText> <ItemText>\\YouSuan\../Core/Src/StepMotor.c\Velocity</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>7</count> <count>7</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>PluseCount,0x0A</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\step</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>8</count> <count>8</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>SetPluseCount,0x0A</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\SetmL</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>9</count> <count>9</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>xTaskHandles</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\slope1</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>10</count> <count>10</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>temp1</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\slope2</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>11</count> <count>11</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>temp2</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\CCRV</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>12</count> <count>12</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>SetmL</ItemText> <ItemText>UseuL</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>13</count> <count>13</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>CuiQuFlag</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\ADCData</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>14</count> <count>14</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>ZhongHeFlag</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\Blank</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>15</count> <count>15</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>slope1</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\ABSB</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>16</count> <count>16</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>slope2</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\ABSBuf</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>17</count> <count>17</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>UseuL</ItemText> <ItemText>\\YouSuan\../Core/Src/YouSuan.c\UseuLBuf</ItemText>
</Ww>
<Ww>
<count>18</count>
<WinNumber>1</WinNumber>
<ItemText>\\YouSuan\../Core/Src/YouSuan.c\UseduL</ItemText>
</Ww>
<Ww>
<count>19</count>
<WinNumber>1</WinNumber>
<ItemText>\\YouSuan\../Core/Src/YouSuan.c\mg_g</ItemText>
</Ww>
<Ww>
<count>20</count>
<WinNumber>1</WinNumber>
<ItemText>\\YouSuan\../Core/Src/YouSuan.c\uL_Blank</ItemText>
</Ww>
<Ww>
<count>21</count>
<WinNumber>1</WinNumber>
<ItemText>\\YouSuan\../Core/Src/YouSuan.c\WeigthSample</ItemText>
</Ww>
<Ww>
<count>22</count>
<WinNumber>1</WinNumber>
<ItemText>\\YouSuan\../Core/Src/YouSuan.c\HasSample</ItemText>
</Ww>
<Ww>
<count>23</count>
<WinNumber>1</WinNumber>
<ItemText>\\YouSuan\../Core/Src/YouSuan.c\SetSample</ItemText>
</Ww>
<Ww>
<count>24</count>
<WinNumber>1</WinNumber>
<ItemText>\\YouSuan\../Core/Src/YouSuan.c\FillFlag</ItemText>
</Ww>
<Ww>
<count>25</count>
<WinNumber>1</WinNumber>
<ItemText>\\YouSuan\../Core/Src/YouSuan.c\SampleRunFlag</ItemText>
</Ww>
<Ww>
<count>26</count>
<WinNumber>1</WinNumber>
<ItemText>StateString</ItemText>
</Ww>
<Ww>
<count>27</count>
<WinNumber>1</WinNumber>
<ItemText>dlteaminCount</ItemText>
</Ww>
<Ww>
<count>28</count>
<WinNumber>1</WinNumber>
<ItemText>dlteamin</ItemText>
</Ww>
<Ww>
<count>29</count>
<WinNumber>1</WinNumber>
<ItemText>BufIndex,0x0A</ItemText>
</Ww> </Ww>
</WatchWindow1> </WatchWindow1>
<WatchWindow2>
<Ww>
<count>0</count>
<WinNumber>2</WinNumber>
<ItemText>HasSample</ItemText>
</Ww>
<Ww>
<count>1</count>
<WinNumber>2</WinNumber>
<ItemText>j</ItemText>
</Ww>
</WatchWindow2>
<MemoryWindow1> <MemoryWindow1>
<Mm> <Mm>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
@ -254,6 +326,30 @@
<AccSizeX>0</AccSizeX> <AccSizeX>0</AccSizeX>
</Mm> </Mm>
</MemoryWindow1> </MemoryWindow1>
<MemoryWindow2>
<Mm>
<WinNumber>2</WinNumber>
<SubType>0</SubType>
<ItemText>0x24018000</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow2>
<MemoryWindow3>
<Mm>
<WinNumber>3</WinNumber>
<SubType>0</SubType>
<ItemText>0x38001000</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow3>
<MemoryWindow4>
<Mm>
<WinNumber>4</WinNumber>
<SubType>0</SubType>
<ItemText>0x24050000</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow4>
<Tracepoint> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>
</Tracepoint> </Tracepoint>
@ -296,6 +392,12 @@
<pszMrulep></pszMrulep> <pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp> <pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp> <pMultCmdsp></pMultCmdsp>
<SystemViewers>
<Entry>
<Name>System Viewer\USART1</Name>
<WinId>35905</WinId>
</Entry>
</SystemViewers>
<DebugDescription> <DebugDescription>
<Enable>1</Enable> <Enable>1</Enable>
<EnableFlashSeq>1</EnableFlashSeq> <EnableFlashSeq>1</EnableFlashSeq>
@ -339,8 +441,8 @@
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\StepMotor.c</PathWithFileName> <PathWithFileName>..\Core\Src\TIM.c</PathWithFileName>
<FilenameWithoutPath>StepMotor.c</FilenameWithoutPath> <FilenameWithoutPath>TIM.c</FilenameWithoutPath>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
@ -351,8 +453,8 @@
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\TIM.c</PathWithFileName> <PathWithFileName>..\Core\Src\StepMotor.c</PathWithFileName>
<FilenameWithoutPath>TIM.c</FilenameWithoutPath> <FilenameWithoutPath>StepMotor.c</FilenameWithoutPath>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
@ -375,6 +477,18 @@
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\YouSuan.c</PathWithFileName>
<FilenameWithoutPath>YouSuan.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>../Core/Src/freertos.c</PathWithFileName> <PathWithFileName>../Core/Src/freertos.c</PathWithFileName>
<FilenameWithoutPath>freertos.c</FilenameWithoutPath> <FilenameWithoutPath>freertos.c</FilenameWithoutPath>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -382,7 +496,7 @@
</File> </File>
<File> <File>
<GroupNumber>2</GroupNumber> <GroupNumber>2</GroupNumber>
<FileNumber>6</FileNumber> <FileNumber>7</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -394,7 +508,7 @@
</File> </File>
<File> <File>
<GroupNumber>2</GroupNumber> <GroupNumber>2</GroupNumber>
<FileNumber>7</FileNumber> <FileNumber>8</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -406,7 +520,7 @@
</File> </File>
<File> <File>
<GroupNumber>2</GroupNumber> <GroupNumber>2</GroupNumber>
<FileNumber>8</FileNumber> <FileNumber>9</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -416,6 +530,18 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Delay.c</PathWithFileName>
<FilenameWithoutPath>Delay.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
@ -426,7 +552,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>9</FileNumber> <FileNumber>11</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -438,7 +564,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>10</FileNumber> <FileNumber>12</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -450,7 +576,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>11</FileNumber> <FileNumber>13</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -462,7 +588,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>12</FileNumber> <FileNumber>14</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -474,7 +600,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>13</FileNumber> <FileNumber>15</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -486,7 +612,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>14</FileNumber> <FileNumber>16</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -498,7 +624,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>15</FileNumber> <FileNumber>17</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -510,7 +636,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>16</FileNumber> <FileNumber>18</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -522,7 +648,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>17</FileNumber> <FileNumber>19</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -534,7 +660,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>18</FileNumber> <FileNumber>20</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -546,7 +672,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>19</FileNumber> <FileNumber>21</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -558,7 +684,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>20</FileNumber> <FileNumber>22</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -570,7 +696,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>21</FileNumber> <FileNumber>23</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -582,7 +708,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>22</FileNumber> <FileNumber>24</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -594,7 +720,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>23</FileNumber> <FileNumber>25</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -604,6 +730,18 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c</PathWithFileName>
<FilenameWithoutPath>stm32f1xx_hal_uart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
@ -614,7 +752,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>24</FileNumber> <FileNumber>27</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -628,13 +766,13 @@
<Group> <Group>
<GroupName>Middlewares/FreeRTOS</GroupName> <GroupName>Middlewares/FreeRTOS</GroupName>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>25</FileNumber> <FileNumber>28</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -646,7 +784,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>26</FileNumber> <FileNumber>29</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -658,7 +796,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>27</FileNumber> <FileNumber>30</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -670,7 +808,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>28</FileNumber> <FileNumber>31</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -682,7 +820,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>29</FileNumber> <FileNumber>32</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -694,7 +832,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>30</FileNumber> <FileNumber>33</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -706,7 +844,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>31</FileNumber> <FileNumber>34</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -718,7 +856,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>32</FileNumber> <FileNumber>35</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -730,7 +868,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>33</FileNumber> <FileNumber>36</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -742,9 +880,9 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>34</FileNumber> <FileNumber>37</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c</PathWithFileName> <PathWithFileName>../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c</PathWithFileName>
@ -754,6 +892,146 @@
</File> </File>
</Group> </Group>
<Group>
<GroupName>Modbus</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\functions\mbfunccoils.c</PathWithFileName>
<FilenameWithoutPath>mbfunccoils.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\functions\mbfuncdiag.c</PathWithFileName>
<FilenameWithoutPath>mbfuncdiag.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\functions\mbfuncdisc.c</PathWithFileName>
<FilenameWithoutPath>mbfuncdisc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\functions\mbfuncholding.c</PathWithFileName>
<FilenameWithoutPath>mbfuncholding.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\functions\mbfuncinput.c</PathWithFileName>
<FilenameWithoutPath>mbfuncinput.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\functions\mbfuncother.c</PathWithFileName>
<FilenameWithoutPath>mbfuncother.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\functions\mbutils.c</PathWithFileName>
<FilenameWithoutPath>mbutils.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\rtu\mbcrc.c</PathWithFileName>
<FilenameWithoutPath>mbcrc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\rtu\mbrtu.c</PathWithFileName>
<FilenameWithoutPath>mbrtu.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\mb.c</PathWithFileName>
<FilenameWithoutPath>mb.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\Modbus\MODBUS-Port-STM32.C</PathWithFileName>
<FilenameWithoutPath>MODBUS-Port-STM32.C</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group> <Group>
<GroupName>::CMSIS</GroupName> <GroupName>::CMSIS</GroupName>
<tvExp>0</tvExp> <tvExp>0</tvExp>

View File

@ -116,8 +116,8 @@
<SimDlgDllArguments>-pCM3</SimDlgDllArguments> <SimDlgDllArguments>-pCM3</SimDlgDllArguments>
<TargetDllName>SARMCM3.DLL</TargetDllName> <TargetDllName>SARMCM3.DLL</TargetDllName>
<TargetDllArguments></TargetDllArguments> <TargetDllArguments></TargetDllArguments>
<TargetDlgDll>TCM.DLL</TargetDlgDll> <TargetDlgDll>TARMSTM.DLL</TargetDlgDll>
<TargetDlgDllArguments>-pCM3</TargetDlgDllArguments> <TargetDlgDllArguments>-pSTM32F103RC</TargetDlgDllArguments>
</DllOption> </DllOption>
<DebugOption> <DebugOption>
<OPTHX> <OPTHX>
@ -191,7 +191,7 @@
<hadIRAM2>0</hadIRAM2> <hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2> <hadIROM2>0</hadIROM2>
<StupSel>8</StupSel> <StupSel>8</StupSel>
<useUlib>0</useUlib> <useUlib>1</useUlib>
<EndSel>0</EndSel> <EndSel>0</EndSel>
<uLtcg>0</uLtcg> <uLtcg>0</uLtcg>
<nSecure>0</nSecure> <nSecure>0</nSecure>
@ -339,7 +339,7 @@
<v6Rtti>0</v6Rtti> <v6Rtti>0</v6Rtti>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define>USE_HAL_DRIVER,STM32F103xE</Define> <Define>USE_HAL_DRIVER,STM32F103xE,RTE_COMPONENTS_H,NDEBUG</Define>
<Undefine></Undefine> <Undefine></Undefine>
<IncludePath>../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</IncludePath> <IncludePath>../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</IncludePath>
</VariousControls> </VariousControls>
@ -395,21 +395,26 @@
<Group> <Group>
<GroupName>Application/User/Core</GroupName> <GroupName>Application/User/Core</GroupName>
<Files> <Files>
<File>
<FileName>StepMotor.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\StepMotor.c</FilePath>
</File>
<File> <File>
<FileName>TIM.c</FileName> <FileName>TIM.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\Core\Src\TIM.c</FilePath> <FilePath>..\Core\Src\TIM.c</FilePath>
</File> </File>
<File>
<FileName>StepMotor.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\StepMotor.c</FilePath>
</File>
<File> <File>
<FileName>main.c</FileName> <FileName>main.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>../Core/Src/main.c</FilePath> <FilePath>../Core/Src/main.c</FilePath>
</File> </File>
<File>
<FileName>YouSuan.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\YouSuan.c</FilePath>
</File>
<File> <File>
<FileName>freertos.c</FileName> <FileName>freertos.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
@ -481,6 +486,11 @@
</FileArmAds> </FileArmAds>
</FileOption> </FileOption>
</File> </File>
<File>
<FileName>Delay.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Delay.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -561,6 +571,11 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c</FilePath> <FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c</FilePath>
</File> </File>
<File>
<FileName>stm32f1xx_hal_uart.c</FileName>
<FileType>1</FileType>
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -628,6 +643,135 @@
</File> </File>
</Files> </Files>
</Group> </Group>
<Group>
<GroupName>Modbus</GroupName>
<GroupOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>2</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
</CommonProperty>
<GroupArmAds>
<Cads>
<interw>2</interw>
<Optim>0</Optim>
<oTime>2</oTime>
<SplitLS>2</SplitLS>
<OneElfS>2</OneElfS>
<Strict>2</Strict>
<EnumInt>2</EnumInt>
<PlainCh>2</PlainCh>
<Ropi>2</Ropi>
<Rwpi>2</Rwpi>
<wLevel>0</wLevel>
<uThumb>2</uThumb>
<uSurpInc>2</uSurpInc>
<uC99>2</uC99>
<uGnu>2</uGnu>
<useXO>2</useXO>
<v6Lang>0</v6Lang>
<v6LangP>0</v6LangP>
<vShortEn>2</vShortEn>
<vShortWch>2</vShortWch>
<v6Lto>2</v6Lto>
<v6WtE>2</v6WtE>
<v6Rtti>2</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath>..\Core\Src\Modbus;..\Core\Src\Modbus\include;..\Core\Src\Modbus\port-stm32;..\Core\Src\Modbus\rtu</IncludePath>
</VariousControls>
</Cads>
<Aads>
<interw>2</interw>
<Ropi>2</Ropi>
<Rwpi>2</Rwpi>
<thumb>2</thumb>
<SplitLS>2</SplitLS>
<SwStkChk>2</SwStkChk>
<NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc>
<useXO>2</useXO>
<ClangAsOpt>0</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Aads>
</GroupArmAds>
</GroupOption>
<Files>
<File>
<FileName>mbfunccoils.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\functions\mbfunccoils.c</FilePath>
</File>
<File>
<FileName>mbfuncdiag.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\functions\mbfuncdiag.c</FilePath>
</File>
<File>
<FileName>mbfuncdisc.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\functions\mbfuncdisc.c</FilePath>
</File>
<File>
<FileName>mbfuncholding.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\functions\mbfuncholding.c</FilePath>
</File>
<File>
<FileName>mbfuncinput.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\functions\mbfuncinput.c</FilePath>
</File>
<File>
<FileName>mbfuncother.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\functions\mbfuncother.c</FilePath>
</File>
<File>
<FileName>mbutils.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\functions\mbutils.c</FilePath>
</File>
<File>
<FileName>mbcrc.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\rtu\mbcrc.c</FilePath>
</File>
<File>
<FileName>mbrtu.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\rtu\mbrtu.c</FilePath>
</File>
<File>
<FileName>mb.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\mb.c</FilePath>
</File>
<File>
<FileName>MODBUS-Port-STM32.C</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\Modbus\MODBUS-Port-STM32.C</FilePath>
</File>
</Files>
</Group>
<Group> <Group>
<GroupName>::CMSIS</GroupName> <GroupName>::CMSIS</GroupName>
</Group> </Group>