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