| @@ -72,6 +72,10 @@ void Error_Handler(void); | |||||
| #define Y13_GPIO_Port GPIOH | #define Y13_GPIO_Port GPIOH | ||||
| #define Y12_Pin GPIO_PIN_9 | #define Y12_Pin GPIO_PIN_9 | ||||
| #define Y12_GPIO_Port GPIOH | #define Y12_GPIO_Port GPIOH | ||||
| #define X5_Pin GPIO_PIN_12 | |||||
| #define X5_GPIO_Port GPIOG | |||||
| #define X4_Pin GPIO_PIN_5 | |||||
| #define X4_GPIO_Port GPIOB | |||||
| /* USER CODE BEGIN Private defines */ | /* USER CODE BEGIN Private defines */ | ||||
| @@ -56,6 +56,7 @@ void DebugMon_Handler(void); | |||||
| void PendSV_Handler(void); | void PendSV_Handler(void); | ||||
| void SysTick_Handler(void); | void SysTick_Handler(void); | ||||
| void TIM2_IRQHandler(void); | void TIM2_IRQHandler(void); | ||||
| void TIM3_IRQHandler(void); | |||||
| void USART1_IRQHandler(void); | void USART1_IRQHandler(void); | ||||
| void DMA2_Stream2_IRQHandler(void); | void DMA2_Stream2_IRQHandler(void); | ||||
| void DMA2_Stream7_IRQHandler(void); | void DMA2_Stream7_IRQHandler(void); | ||||
| @@ -34,6 +34,8 @@ extern "C" { | |||||
| extern TIM_HandleTypeDef htim2; | extern TIM_HandleTypeDef htim2; | ||||
| extern TIM_HandleTypeDef htim3; | |||||
| extern TIM_HandleTypeDef htim10; | extern TIM_HandleTypeDef htim10; | ||||
| extern TIM_HandleTypeDef htim11; | extern TIM_HandleTypeDef htim11; | ||||
| @@ -47,6 +49,7 @@ extern TIM_HandleTypeDef htim14; | |||||
| /* USER CODE END Private defines */ | /* USER CODE END Private defines */ | ||||
| void MX_TIM2_Init(void); | void MX_TIM2_Init(void); | ||||
| void MX_TIM3_Init(void); | |||||
| void MX_TIM10_Init(void); | void MX_TIM10_Init(void); | ||||
| void MX_TIM11_Init(void); | void MX_TIM11_Init(void); | ||||
| void MX_TIM13_Init(void); | void MX_TIM13_Init(void); | ||||
| @@ -61,17 +61,17 @@ void MX_GPIO_Init(void) | |||||
| GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; | ||||
| HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); | HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); | ||||
| /*Configure GPIO pin : PG12 */ | |||||
| GPIO_InitStruct.Pin = GPIO_PIN_12; | |||||
| /*Configure GPIO pin : PtPin */ | |||||
| GPIO_InitStruct.Pin = X5_Pin; | |||||
| GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||
| GPIO_InitStruct.Pull = GPIO_NOPULL; | |||||
| HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); | |||||
| GPIO_InitStruct.Pull = GPIO_PULLUP; | |||||
| HAL_GPIO_Init(X5_GPIO_Port, &GPIO_InitStruct); | |||||
| /*Configure GPIO pin : PB5 */ | |||||
| GPIO_InitStruct.Pin = GPIO_PIN_5; | |||||
| /*Configure GPIO pin : PtPin */ | |||||
| GPIO_InitStruct.Pin = X4_Pin; | |||||
| GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||
| GPIO_InitStruct.Pull = GPIO_NOPULL; | |||||
| HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); | |||||
| GPIO_InitStruct.Pull = GPIO_PULLUP; | |||||
| HAL_GPIO_Init(X4_GPIO_Port, &GPIO_InitStruct); | |||||
| } | } | ||||
| @@ -41,9 +41,9 @@ int32_t AllPulseCNT = 0; | |||||
| int32_t BaseCNT = 0; | int32_t BaseCNT = 0; | ||||
| int32_t CNT_Only[10] = {0}; | int32_t CNT_Only[10] = {0}; | ||||
| uint8_t AccITCount = 0; | |||||
| uint8_t EXT_Flag = 0; | |||||
| uint8_t PulseStartFlag = 0; | uint8_t PulseStartFlag = 0; | ||||
| uint8_t ArrTimes = 0; | |||||
| extern uint8_t Register_H[16384]; ///<寄存器的高字节 | extern uint8_t Register_H[16384]; ///<寄存器的高字节 | ||||
| extern uint8_t Register_L[16384]; ///<寄存器的低字节 | extern uint8_t Register_L[16384]; ///<寄存器的低字节 | ||||
| @@ -68,7 +68,7 @@ extern uint8_t Register_L[16384]; ///< | |||||
| /* Private function prototypes -----------------------------------------------*/ | /* Private function prototypes -----------------------------------------------*/ | ||||
| void SystemClock_Config(void); | void SystemClock_Config(void); | ||||
| /* USER CODE BEGIN PFP */ | /* USER CODE BEGIN PFP */ | ||||
| void PVD_Init(void); | |||||
| /* USER CODE END PFP */ | /* USER CODE END PFP */ | ||||
| /* Private user code ---------------------------------------------------------*/ | /* Private user code ---------------------------------------------------------*/ | ||||
| @@ -78,31 +78,36 @@ void PVD_Init(void); | |||||
| #define TASK_Y1Direction 6 | #define TASK_Y1Direction 6 | ||||
| #define TASK_PulseStart 5 | #define TASK_PulseStart 5 | ||||
| #define TASK_DirOutput 6 | #define TASK_DirOutput 6 | ||||
| #define TASK_PulseGetCount 6 | |||||
| #define TASK_PulseGetCount 5 | |||||
| #define TASK_EXTSet 6 | |||||
| /* 任务堆栈大小 */ | /* 任务堆栈大小 */ | ||||
| #define Task_Y1Direction_SIZE 256 | #define Task_Y1Direction_SIZE 256 | ||||
| #define Task_PulseStart_SIZE 512 | #define Task_PulseStart_SIZE 512 | ||||
| #define Task_DirOutput_SIZE 256 | #define Task_DirOutput_SIZE 256 | ||||
| #define Task_PulseGetCount_SIZE 256 | #define Task_PulseGetCount_SIZE 256 | ||||
| #define Task_EXTSet_SIZE 256 | |||||
| /* 任务控制块 */ | /* 任务控制块 */ | ||||
| OS_TCB Y1Direction_Tsk; | OS_TCB Y1Direction_Tsk; | ||||
| OS_TCB PulseStart_Tsk; | OS_TCB PulseStart_Tsk; | ||||
| OS_TCB DirOutput_Tsk; | OS_TCB DirOutput_Tsk; | ||||
| OS_TCB PulseGetCount_Tsk; | OS_TCB PulseGetCount_Tsk; | ||||
| OS_TCB EXTSet_Tsk; | |||||
| /* 任务栈 */ | /* 任务栈 */ | ||||
| CPU_STK Task_Y1Direction_STK[Task_Y1Direction_SIZE]; | CPU_STK Task_Y1Direction_STK[Task_Y1Direction_SIZE]; | ||||
| CPU_STK Task_PulseStart_STK[Task_PulseStart_SIZE]; | CPU_STK Task_PulseStart_STK[Task_PulseStart_SIZE]; | ||||
| CPU_STK Task_DirOutput_STK[Task_DirOutput_SIZE]; | CPU_STK Task_DirOutput_STK[Task_DirOutput_SIZE]; | ||||
| CPU_STK Task_PulseGetCount_STK[Task_PulseGetCount_SIZE]; | CPU_STK Task_PulseGetCount_STK[Task_PulseGetCount_SIZE]; | ||||
| CPU_STK Task_EXTSet_STK[Task_EXTSet_SIZE]; | |||||
| /* 任务函数 */ | /* 任务函数 */ | ||||
| void Y1Direction(void *p_arg); | void Y1Direction(void *p_arg); | ||||
| void PulseStartTsk(void *p_arg); | void PulseStartTsk(void *p_arg); | ||||
| void DirOutput(void *p_arg); | void DirOutput(void *p_arg); | ||||
| void PulseGetCount(void *p_arg); | void PulseGetCount(void *p_arg); | ||||
| void EXTSet(void *p_arg); | |||||
| /* USER CODE END 0 */ | /* USER CODE END 0 */ | ||||
| @@ -143,14 +148,9 @@ int main(void) | |||||
| MX_TIM11_Init(); | MX_TIM11_Init(); | ||||
| MX_TIM13_Init(); | MX_TIM13_Init(); | ||||
| MX_TIM14_Init(); | MX_TIM14_Init(); | ||||
| MX_TIM3_Init(); | |||||
| /* USER CODE BEGIN 2 */ | /* USER CODE BEGIN 2 */ | ||||
| // PulseBaseInit(0, 0, 200);//设置为第0段脉冲开始,相对模式, 最大脉冲为0 | |||||
| // PulseInit(0, 1, 5, 0); //第几段脉冲,频率,数量,下一段脉冲 | |||||
| // AddPulse(1, 100, 200, 0); | |||||
| // AddPulse(2, 1, 55, 0); | |||||
| // Options.AccUpTime = 50; | |||||
| BSP_Init(); | BSP_Init(); | ||||
| @@ -215,6 +215,20 @@ int main(void) | |||||
| (void * )0, | (void * )0, | ||||
| (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, | (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, | ||||
| (OS_ERR * )&err); | (OS_ERR * )&err); | ||||
| /* 任务5 */ | |||||
| OSTaskCreate((OS_TCB * )&EXTSet_Tsk, | |||||
| (CPU_CHAR* )"EXTSet_Tsk", | |||||
| (OS_TASK_PTR)EXTSet, | |||||
| (void * )0, | |||||
| (OS_PRIO )TASK_EXTSet, | |||||
| (CPU_STK * )&Task_EXTSet_STK[0], | |||||
| (CPU_STK_SIZE)Task_EXTSet_SIZE/10, | |||||
| (CPU_STK_SIZE)Task_EXTSet_SIZE, | |||||
| (OS_MSG_QTY)0, | |||||
| (OS_TICK )0, | |||||
| (void * )0, | |||||
| (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, | |||||
| (OS_ERR * )&err); | |||||
| /* 掉电数据读取 */ | /* 掉电数据读取 */ | ||||
| ModbusLoadSRAM(); | ModbusLoadSRAM(); | ||||
| @@ -293,41 +307,7 @@ void Y1Direction(void *p_arg) | |||||
| while(1) | while(1) | ||||
| { | { | ||||
| /* 获取加减速所需要的脉冲数 */ | |||||
| GetAddCount(); | |||||
| /* 段切换时的脉冲加减速 */ | |||||
| if (ArrFlag == 1) | |||||
| { | |||||
| /* 脉冲加速 */ | |||||
| if (Acc > 0) | |||||
| { | |||||
| if (TIM2->CNT <= AccUpCount) | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[PrePulse].Frequency + TIM2->CNT * Acc); | |||||
| if (TIM2->CNT == 0) PulseStart(); /* 开始产生脉冲 */ | |||||
| } | |||||
| else | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency); | |||||
| ArrFlag = 0; | |||||
| } | |||||
| } | |||||
| /* 脉冲减速 */ | |||||
| else if (Acc <= 0) | |||||
| { | |||||
| if (TIM2->CNT <= AccDownCount) | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[PrePulse].Frequency + TIM2->CNT * Acc); | |||||
| if(TIM2->CNT == 0) PulseStart(); /* 开始产生脉冲 */ | |||||
| } | |||||
| else | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency); | |||||
| ArrFlag = 0; | |||||
| } | |||||
| } | |||||
| } | |||||
| OSTimeDly(100, OS_OPT_TIME_DLY, &err); // 延时 100 个节拍 | OSTimeDly(100, OS_OPT_TIME_DLY, &err); // 延时 100 个节拍 | ||||
| } | } | ||||
| } | } | ||||
| @@ -342,59 +322,24 @@ void PulseStartTsk(void *p_arg) | |||||
| OS_ERR err; | OS_ERR err; | ||||
| uint8_t EN = 1; | uint8_t EN = 1; | ||||
| while(1) | while(1) | ||||
| { | { | ||||
| PLSRPluseLoad(); //读取脉冲设置 | PLSRPluseLoad(); //读取脉冲设置 | ||||
| PLSROptionLoad(); //读取脉冲基础设置 | PLSROptionLoad(); //读取脉冲基础设置 | ||||
| if(Register_L[0x3000] == 0x01 && EN == 1) | |||||
| if (Register_L[0x3000] == 0x01 && EN == 1) | |||||
| { | { | ||||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency); | |||||
| PulseStart(); | |||||
| EN = 0; | EN = 0; | ||||
| PulseStartFlag = 1; | PulseStartFlag = 1; | ||||
| PulseStart(); | |||||
| HAL_TIM_Base_Start_IT(&htim3); /* 启动定时器3和中断 */ | |||||
| } | } | ||||
| else if(Register_L[0x3000] == 0x02 && EN == 0) | |||||
| else if (Register_L[0x3000] == 0x02 && EN == 0) | |||||
| { | { | ||||
| EN = 1; | EN = 1; | ||||
| } | } | ||||
| ModbusSaveSRAM(); | ModbusSaveSRAM(); | ||||
| /* 第一段脉冲的加速 */ | |||||
| if (NowPulse == Options.StartPulse && PulseStartFlag == 1) | |||||
| { | |||||
| Acc = (float)PulseOutput[NowPulse].Frequency / (float)AccUpCount;/* 计算加速度 */ | |||||
| if (AccUpCount < PulseOutput[NowPulse].PulseCount)//如果能够完成加速 | |||||
| { | |||||
| if(TIM2->CNT < AccUpCount) | |||||
| { | |||||
| SetFrequency(Options.SentPost, TIM2->CNT * Acc); | |||||
| } | |||||
| else | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency); | |||||
| PulseStartFlag = 0; | |||||
| } | |||||
| } | |||||
| else //不能完成加速 | |||||
| { | |||||
| } | |||||
| } | |||||
| /* 最后一段脉冲的减速 */ | |||||
| if (NowPulse == Options.AllPulse - 1) | |||||
| { | |||||
| Acc = - (float)PulseOutput[NowPulse].Frequency / (float)AccDownCount;/* 计算加速度 */ | |||||
| if (TIM2->CNT > PulseOutput[NowPulse].PulseCount - AccUpCount - AccDownCount) /* 当达到脉冲减速的位置开始减速 */ | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency + TIM2->CNT * Acc); | |||||
| } | |||||
| } | |||||
| OSTimeDly(10, OS_OPT_TIME_DLY, &err); // 延时 10 个节拍 | OSTimeDly(10, OS_OPT_TIME_DLY, &err); // 延时 10 个节拍 | ||||
| } | } | ||||
| } | } | ||||
| @@ -480,14 +425,6 @@ void PulseGetCount(void *p_arg) | |||||
| { | { | ||||
| Options.Dir = 0; | Options.Dir = 0; | ||||
| } | } | ||||
| // if(Options.Dir == 0) | |||||
| // { | |||||
| // AllPulseCNT = BaseCNT + TIM2->CNT; | |||||
| // } | |||||
| // else if(Options.Dir == 1) | |||||
| // { | |||||
| // AllPulseCNT = BaseCNT - TIM2->CNT; | |||||
| // } | |||||
| if(TIM2->CNT != 0) | if(TIM2->CNT != 0) | ||||
| { | { | ||||
| @@ -509,6 +446,128 @@ void PulseGetCount(void *p_arg) | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * @brief 任务4,EXT | |||||
| * @return 无 | |||||
| */ | |||||
| void EXTSet(void *p_arg) | |||||
| { | |||||
| p_arg = p_arg; | |||||
| OS_ERR err; | |||||
| uint8_t X4_Sta, X5_Sta; | |||||
| while(1) | |||||
| { | |||||
| if(HAL_GPIO_ReadPin(GPIOB, X4_Pin) == GPIO_PIN_SET) | |||||
| { | |||||
| OSTimeDly(10, OS_OPT_TIME_DLY, &err); | |||||
| if(HAL_GPIO_ReadPin(GPIOB, X4_Pin) == GPIO_PIN_SET) | |||||
| { | |||||
| X4_Sta = 1; | |||||
| } | |||||
| } | |||||
| if(HAL_GPIO_ReadPin(GPIOB, X5_Pin) == GPIO_PIN_RESET) | |||||
| { | |||||
| OSTimeDly(10, OS_OPT_TIME_DLY, &err); | |||||
| if(HAL_GPIO_ReadPin(GPIOB, X5_Pin) == GPIO_PIN_RESET) | |||||
| { | |||||
| X5_Sta = 1; | |||||
| } | |||||
| } | |||||
| if(X4_Sta == 1 && Options.EXT == 0) | |||||
| { | |||||
| EXT_Flag = 1; | |||||
| X4_Sta = 0; | |||||
| } | |||||
| if(X5_Sta == 1 && Options.EXT == 1) | |||||
| { | |||||
| EXT_Flag = 1; | |||||
| X5_Sta = 0; | |||||
| } | |||||
| if(EXT_Flag == 1) | |||||
| { | |||||
| EXT_Flag = 0; | |||||
| HAL_TIM_GenerateEvent(&htim2, TIM_EVENTSOURCE_UPDATE); | |||||
| } | |||||
| OSTimeDly(100, OS_OPT_TIME_DLY, &err); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief 定时器中断回调函数,用来实现脉冲加减速(定时时间1ms) | |||||
| * @return 无 | |||||
| */ | |||||
| void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) | |||||
| { | |||||
| if (htim == (&htim3)) | |||||
| { | |||||
| if (ArrFlag == 1) | |||||
| { | |||||
| /* 脉冲加速 */ | |||||
| if (Acc > 0) | |||||
| { | |||||
| if (ArrTimes <= Options.AccUpTime) | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[PrePulse].Frequency + ArrTimes * Acc); | |||||
| if(ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||||
| ArrTimes++; | |||||
| } | |||||
| else | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency); | |||||
| ArrTimes = 0; | |||||
| ArrFlag = 0; | |||||
| HAL_TIM_Base_Stop_IT(&htim3); // 停止定时器并禁用中断 | |||||
| } | |||||
| } | |||||
| /* 脉冲减速 */ | |||||
| else if (Acc <= 0) | |||||
| { | |||||
| if (ArrTimes <= Options.AccDownTime) | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[PrePulse].Frequency + ArrTimes * Acc); | |||||
| if (ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||||
| ArrTimes++; | |||||
| } | |||||
| else | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency); | |||||
| ArrTimes = 0; | |||||
| ArrFlag = 0; | |||||
| HAL_TIM_Base_Stop_IT(&htim3); // 停止定时器并禁用中断 | |||||
| } | |||||
| } | |||||
| } | |||||
| /* 第一段脉冲的加速 */ | |||||
| if (NowPulse == Options.StartPulse && PulseStartFlag == 1) | |||||
| { | |||||
| Acc = PulseOutput[NowPulse].Frequency / Options.AccUpTime;/* 计算加速度 */ | |||||
| if(ArrTimes <= Options.AccUpTime) | |||||
| { | |||||
| ArrTimes++; | |||||
| SetFrequency(Options.SentPost, ArrTimes * Acc); | |||||
| if (ArrTimes == 1) PulseStart(); /* 开始产生脉冲 */ | |||||
| } | |||||
| else | |||||
| { | |||||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency); | |||||
| HAL_TIM_Base_Stop_IT(&htim3); // 停止定时器并禁用中断 | |||||
| PulseStartFlag = 0; | |||||
| ArrTimes = 0; | |||||
| } | |||||
| } | |||||
| /* 最后一段脉冲的减速 */ | |||||
| if(Options.AllPulse == PulseNum) | |||||
| { | |||||
| Acc = - PulseOutput[NowPulse].Frequency / Options.AccUpTime;/* 计算加速度 */ | |||||
| /* 思路: 在中断内计算正常情况下减速时间对应多少脉冲,在给最后一段脉冲赋值时减去对应的值,同时使能减速标志位 | |||||
| 在此函数内实现最后一段脉冲的减速过程。 */ | |||||
| } | |||||
| } | |||||
| } | |||||
| /* USER CODE END 4 */ | /* USER CODE END 4 */ | ||||
| /** | /** | ||||
| @@ -61,6 +61,7 @@ | |||||
| /* External variables --------------------------------------------------------*/ | /* External variables --------------------------------------------------------*/ | ||||
| extern TIM_HandleTypeDef htim2; | extern TIM_HandleTypeDef htim2; | ||||
| extern TIM_HandleTypeDef htim3; | |||||
| extern DMA_HandleTypeDef hdma_usart1_rx; | extern DMA_HandleTypeDef hdma_usart1_rx; | ||||
| extern DMA_HandleTypeDef hdma_usart1_tx; | extern DMA_HandleTypeDef hdma_usart1_tx; | ||||
| extern UART_HandleTypeDef huart1; | extern UART_HandleTypeDef huart1; | ||||
| @@ -217,7 +218,9 @@ void TIM2_IRQHandler(void) | |||||
| HAL_TIM_IRQHandler(&htim2); | HAL_TIM_IRQHandler(&htim2); | ||||
| /* USER CODE BEGIN TIM2_IRQn 1 */ | /* USER CODE BEGIN TIM2_IRQn 1 */ | ||||
| HAL_TIM_PWM_Stop_IT(&htim10,TIM_CHANNEL_1); /* 停止PWM输出 */ | |||||
| __HAL_TIM_CLEAR_FLAG(&htim2, TIM_FLAG_UPDATE); | |||||
| //HAL_TIM_PWM_Stop_IT(&htim10,TIM_CHANNEL_1); /* 停止PWM输出 */ | |||||
| TIM2->CNT = 0; | |||||
| PulseNum ++; /* 脉冲段数增加 */ | PulseNum ++; /* 脉冲段数增加 */ | ||||
| @@ -235,8 +238,6 @@ void TIM2_IRQHandler(void) | |||||
| { | { | ||||
| NowPulse = PulseOutput[NowPulse].NextPulse - 1; /* 进入下一段脉冲 */ | NowPulse = PulseOutput[NowPulse].NextPulse - 1; /* 进入下一段脉冲 */ | ||||
| } | } | ||||
| BaseCNT += PulseOutput[PrePulse].PulseCount; | |||||
| /* 准备加减速 */ | /* 准备加减速 */ | ||||
| if(PulseOutput[PrePulse].Frequency <= PulseOutput[NowPulse].Frequency) | if(PulseOutput[PrePulse].Frequency <= PulseOutput[NowPulse].Frequency) | ||||
| { | { | ||||
| @@ -248,8 +249,10 @@ void TIM2_IRQHandler(void) | |||||
| Acc = GetAcc(PulseOutput[PrePulse].Frequency, | Acc = GetAcc(PulseOutput[PrePulse].Frequency, | ||||
| PulseOutput[NowPulse].Frequency, Options.AccDownTime); /* 计算加速度 */ | PulseOutput[NowPulse].Frequency, Options.AccDownTime); /* 计算加速度 */ | ||||
| } | } | ||||
| ArrFlag = 1; | |||||
| SetNextPulse();/* 设置下一次进入中断的脉冲数 */ | |||||
| ArrFlag = 1; | |||||
| SetNextPulse();/* 设置下一次进入中断的脉冲数 */ | |||||
| HAL_TIM_Base_Start_IT(&htim3); /* 启动定时器3和中断 */ | |||||
| } | } | ||||
| /* 如果之后没有脉冲 */ | /* 如果之后没有脉冲 */ | ||||
| @@ -257,7 +260,6 @@ void TIM2_IRQHandler(void) | |||||
| { | { | ||||
| PulseCount = 0; | PulseCount = 0; | ||||
| ArrFlag = 0; | ArrFlag = 0; | ||||
| BaseCNT += PulseOutput[NowPulse].PulseCount; | |||||
| HAL_TIM_PWM_Stop_IT(&htim10,TIM_CHANNEL_1); /* 停止PWM输出 */ | HAL_TIM_PWM_Stop_IT(&htim10,TIM_CHANNEL_1); /* 停止PWM输出 */ | ||||
| } | } | ||||
| } | } | ||||
| @@ -287,9 +289,7 @@ void TIM2_IRQHandler(void) | |||||
| Acc = GetAcc(PulseOutput[PrePulse].Frequency, | Acc = GetAcc(PulseOutput[PrePulse].Frequency, | ||||
| PulseOutput[NowPulse].Frequency, Options.AccUpTime); /* 计算加速度 */ | PulseOutput[NowPulse].Frequency, Options.AccUpTime); /* 计算加速度 */ | ||||
| ArrFlag = 1; | ArrFlag = 1; | ||||
| SetNextPulse();/* 设置下一次进入中断的脉冲数 */ | SetNextPulse();/* 设置下一次进入中断的脉冲数 */ | ||||
| PulseStart(); /* 开始产生脉冲 */ | |||||
| } | } | ||||
| /* 如果之后没有脉冲 */ | /* 如果之后没有脉冲 */ | ||||
| else | else | ||||
| @@ -305,6 +305,20 @@ void TIM2_IRQHandler(void) | |||||
| /* USER CODE END TIM2_IRQn 1 */ | /* USER CODE END TIM2_IRQn 1 */ | ||||
| } | } | ||||
| /** | |||||
| * @brief This function handles TIM3 global interrupt. | |||||
| */ | |||||
| void TIM3_IRQHandler(void) | |||||
| { | |||||
| /* USER CODE BEGIN TIM3_IRQn 0 */ | |||||
| /* USER CODE END TIM3_IRQn 0 */ | |||||
| HAL_TIM_IRQHandler(&htim3); | |||||
| /* USER CODE BEGIN TIM3_IRQn 1 */ | |||||
| /* USER CODE END TIM3_IRQn 1 */ | |||||
| } | |||||
| /** | /** | ||||
| * @brief This function handles USART1 global interrupt. | * @brief This function handles USART1 global interrupt. | ||||
| */ | */ | ||||
| @@ -25,6 +25,7 @@ | |||||
| /* USER CODE END 0 */ | /* USER CODE END 0 */ | ||||
| TIM_HandleTypeDef htim2; | TIM_HandleTypeDef htim2; | ||||
| TIM_HandleTypeDef htim3; | |||||
| TIM_HandleTypeDef htim10; | TIM_HandleTypeDef htim10; | ||||
| TIM_HandleTypeDef htim11; | TIM_HandleTypeDef htim11; | ||||
| TIM_HandleTypeDef htim13; | TIM_HandleTypeDef htim13; | ||||
| @@ -73,6 +74,46 @@ void MX_TIM2_Init(void) | |||||
| HAL_TIM_Base_Start_IT(&htim2); | HAL_TIM_Base_Start_IT(&htim2); | ||||
| /* USER CODE END TIM2_Init 2 */ | /* USER CODE END TIM2_Init 2 */ | ||||
| } | |||||
| /* TIM3 init function */ | |||||
| void MX_TIM3_Init(void) | |||||
| { | |||||
| /* USER CODE BEGIN TIM3_Init 0 */ | |||||
| /* USER CODE END TIM3_Init 0 */ | |||||
| TIM_ClockConfigTypeDef sClockSourceConfig = {0}; | |||||
| TIM_MasterConfigTypeDef sMasterConfig = {0}; | |||||
| /* USER CODE BEGIN TIM3_Init 1 */ | |||||
| /* USER CODE END TIM3_Init 1 */ | |||||
| htim3.Instance = TIM3; | |||||
| htim3.Init.Prescaler = 72-1; | |||||
| htim3.Init.CounterMode = TIM_COUNTERMODE_UP; | |||||
| htim3.Init.Period = 999; | |||||
| htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | |||||
| htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | |||||
| if (HAL_TIM_Base_Init(&htim3) != HAL_OK) | |||||
| { | |||||
| Error_Handler(); | |||||
| } | |||||
| sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; | |||||
| if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) | |||||
| { | |||||
| Error_Handler(); | |||||
| } | |||||
| sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; | |||||
| sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | |||||
| if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) | |||||
| { | |||||
| Error_Handler(); | |||||
| } | |||||
| /* USER CODE BEGIN TIM3_Init 2 */ | |||||
| __HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE); | |||||
| /* USER CODE END TIM3_Init 2 */ | |||||
| } | } | ||||
| /* TIM10 init function */ | /* TIM10 init function */ | ||||
| void MX_TIM10_Init(void) | void MX_TIM10_Init(void) | ||||
| @@ -88,9 +129,9 @@ void MX_TIM10_Init(void) | |||||
| /* USER CODE END TIM10_Init 1 */ | /* USER CODE END TIM10_Init 1 */ | ||||
| htim10.Instance = TIM10; | htim10.Instance = TIM10; | ||||
| htim10.Init.Prescaler = 72; | |||||
| htim10.Init.Prescaler = 1; | |||||
| htim10.Init.CounterMode = TIM_COUNTERMODE_UP; | htim10.Init.CounterMode = TIM_COUNTERMODE_UP; | ||||
| htim10.Init.Period = 65535; | |||||
| htim10.Init.Period = 1; | |||||
| htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | ||||
| htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; | htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; | ||||
| if (HAL_TIM_Base_Init(&htim10) != HAL_OK) | if (HAL_TIM_Base_Init(&htim10) != HAL_OK) | ||||
| @@ -102,7 +143,7 @@ void MX_TIM10_Init(void) | |||||
| Error_Handler(); | Error_Handler(); | ||||
| } | } | ||||
| sConfigOC.OCMode = TIM_OCMODE_PWM1; | sConfigOC.OCMode = TIM_OCMODE_PWM1; | ||||
| sConfigOC.Pulse = 32767; | |||||
| sConfigOC.Pulse = 0; | |||||
| sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; | sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; | ||||
| sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; | sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; | ||||
| if (HAL_TIM_PWM_ConfigChannel(&htim10, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) | if (HAL_TIM_PWM_ConfigChannel(&htim10, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) | ||||
| @@ -273,6 +314,21 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) | |||||
| /* USER CODE END TIM2_MspInit 1 */ | /* USER CODE END TIM2_MspInit 1 */ | ||||
| } | } | ||||
| else if(tim_baseHandle->Instance==TIM3) | |||||
| { | |||||
| /* USER CODE BEGIN TIM3_MspInit 0 */ | |||||
| /* USER CODE END TIM3_MspInit 0 */ | |||||
| /* TIM3 clock enable */ | |||||
| __HAL_RCC_TIM3_CLK_ENABLE(); | |||||
| /* TIM3 interrupt Init */ | |||||
| HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); | |||||
| HAL_NVIC_EnableIRQ(TIM3_IRQn); | |||||
| /* USER CODE BEGIN TIM3_MspInit 1 */ | |||||
| /* USER CODE END TIM3_MspInit 1 */ | |||||
| } | |||||
| else if(tim_baseHandle->Instance==TIM10) | else if(tim_baseHandle->Instance==TIM10) | ||||
| { | { | ||||
| /* USER CODE BEGIN TIM10_MspInit 0 */ | /* USER CODE BEGIN TIM10_MspInit 0 */ | ||||
| @@ -430,6 +486,20 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) | |||||
| /* USER CODE END TIM2_MspDeInit 1 */ | /* USER CODE END TIM2_MspDeInit 1 */ | ||||
| } | } | ||||
| else if(tim_baseHandle->Instance==TIM3) | |||||
| { | |||||
| /* USER CODE BEGIN TIM3_MspDeInit 0 */ | |||||
| /* USER CODE END TIM3_MspDeInit 0 */ | |||||
| /* Peripheral clock disable */ | |||||
| __HAL_RCC_TIM3_CLK_DISABLE(); | |||||
| /* TIM3 interrupt Deinit */ | |||||
| HAL_NVIC_DisableIRQ(TIM3_IRQn); | |||||
| /* USER CODE BEGIN TIM3_MspDeInit 1 */ | |||||
| /* USER CODE END TIM3_MspDeInit 1 */ | |||||
| } | |||||
| else if(tim_baseHandle->Instance==TIM10) | else if(tim_baseHandle->Instance==TIM10) | ||||
| { | { | ||||
| /* USER CODE BEGIN TIM10_MspDeInit 0 */ | /* USER CODE BEGIN TIM10_MspDeInit 0 */ | ||||
| @@ -20,15 +20,15 @@ | |||||
| <LeaveTargetRunning>_ 0</LeaveTargetRunning> | <LeaveTargetRunning>_ 0</LeaveTargetRunning> | ||||
| </StLinkDriver> | </StLinkDriver> | ||||
| <DebugChecksum> | <DebugChecksum> | ||||
| <Checksum>2527891484</Checksum> | |||||
| <Checksum>3780237782</Checksum> | |||||
| </DebugChecksum> | </DebugChecksum> | ||||
| <Exceptions> | <Exceptions> | ||||
| <StopOnUncaught>_ 0</StopOnUncaught> | <StopOnUncaught>_ 0</StopOnUncaught> | ||||
| <StopOnThrow>_ 0</StopOnThrow> | <StopOnThrow>_ 0</StopOnThrow> | ||||
| </Exceptions> | </Exceptions> | ||||
| <Disassembly> | <Disassembly> | ||||
| <InstrCount>0</InstrCount> | |||||
| <MixedMode>1</MixedMode> | <MixedMode>1</MixedMode> | ||||
| <InstrCount>0</InstrCount> | |||||
| </Disassembly> | </Disassembly> | ||||
| <CodeCoverage> | <CodeCoverage> | ||||
| <Enabled>0</Enabled> | <Enabled>0</Enabled> | ||||
| @@ -75,8 +75,9 @@ | |||||
| <Fmt0>{W}1:AccITCount 3 0</Fmt0> | <Fmt0>{W}1:AccITCount 3 0</Fmt0> | ||||
| <Fmt1>{W}1:AllPulseCNT 3 0</Fmt1> | <Fmt1>{W}1:AllPulseCNT 3 0</Fmt1> | ||||
| <Fmt2>{W}1:DatL 3 0</Fmt2> | <Fmt2>{W}1:DatL 3 0</Fmt2> | ||||
| <Fmt3>{W}1:c 4 0</Fmt3> | |||||
| <Fmt4>{W}1:datCount 3 0</Fmt4> | |||||
| <Fmt3>{W}1:arr 3 0</Fmt3> | |||||
| <Fmt4>{W}1:c 4 0</Fmt4> | |||||
| <Fmt5>{W}1:datCount 3 0</Fmt5> | |||||
| </watch_formats> | </watch_formats> | ||||
| <Trace2> | <Trace2> | ||||
| <Enabled>0</Enabled> | <Enabled>0</Enabled> | ||||
| @@ -42,37 +42,6 @@ void SetFrequency(uint8_t SentPost, uint32_t Frequency) | |||||
| } | } | ||||
| /** | |||||
| * @brief 设置脉冲基本参数 | |||||
| * @param[in] Pulse 第几段脉冲 | |||||
| * @param[in] Ferquency 脉冲的频率 | |||||
| * @param[in] Count 脉冲的数量 | |||||
| * @param[in] EXT EXT信号 | |||||
| * @param[in] NextPulse 下一段脉冲 | |||||
| * @return 无 | |||||
| */ | |||||
| void SetPulse(uint8_t Pulse, uint32_t Ferquency, int32_t Count, uint8_t EXT, int8_t NextPulse) | |||||
| { | |||||
| PulseOutput[Pulse].Frequency = Ferquency; | |||||
| PulseOutput[Pulse].PulseCount = Count; | |||||
| PulseOutput[Pulse].EXT = EXT; | |||||
| PulseOutput[Pulse].NextPulse = NextPulse; | |||||
| } | |||||
| /** | |||||
| * @brief 脉冲初始化 | |||||
| * @param[in] StartPulse 起始脉冲段 | |||||
| * @param[in] PulseMod 绝对1/相对0 | |||||
| * @return 无 | |||||
| */ | |||||
| void PulseBaseInit(uint8_t StartPulse, uint8_t PulseMod, int32_t MAX_Pulse) | |||||
| { | |||||
| Options.StartPulse = StartPulse; | |||||
| Options.RunMod = PulseMod; | |||||
| NowPulse = StartPulse; | |||||
| MAX_Pulse = MAX_Pulse; | |||||
| } | |||||
| /** | /** | ||||
| * @brief 脉冲开始 | * @brief 脉冲开始 | ||||
| * @param[in] StartPulse 起始脉冲段 | * @param[in] StartPulse 起始脉冲段 | ||||
| @@ -91,13 +60,14 @@ void PulseStart(void) | |||||
| switch(Options.SentPost) | switch(Options.SentPost) | ||||
| { | { | ||||
| case 0: HAL_TIM_PWM_Start_IT(&htim10, TIM_CHANNEL_1); break; | |||||
| case 1: HAL_TIM_PWM_Start_IT(&htim11, TIM_CHANNEL_1); break; | |||||
| case 2: HAL_TIM_PWM_Start_IT(&htim13, TIM_CHANNEL_1); break; | |||||
| case 3: HAL_TIM_PWM_Start_IT(&htim14, TIM_CHANNEL_1); break; | |||||
| case 0: HAL_TIM_PWM_Start(&htim10, TIM_CHANNEL_1); break; | |||||
| case 1: HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1); break; | |||||
| case 2: HAL_TIM_PWM_Start(&htim13, TIM_CHANNEL_1); break; | |||||
| case 3: HAL_TIM_PWM_Start(&htim14, TIM_CHANNEL_1); break; | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * @brief 获取加速度 | * @brief 获取加速度 | ||||
| * @param[in] Start 起始脉冲频率 | * @param[in] Start 起始脉冲频率 | ||||
| @@ -110,54 +80,6 @@ float GetAcc(int32_t Start, int32_t End, int32_t AccCount) | |||||
| return ((float)End - (float)Start) / (float)AccCount; | return ((float)End - (float)Start) / (float)AccCount; | ||||
| } | } | ||||
| /** | |||||
| * @brief 添加新的脉冲(只允许按顺序添加) | |||||
| * @param[in] Pulse 第几段脉冲 | |||||
| * @param[in] Ferquency 脉冲的频率 | |||||
| * @param[in] Count 脉冲的数量 | |||||
| * @param[in] NextPulse 下一段脉冲 | |||||
| * @return 无 | |||||
| */ | |||||
| void AddPulse(uint8_t Pulse, uint32_t Ferquency, int32_t Count, int8_t NextPulse) | |||||
| { | |||||
| if(Pulse == Options.AllPulse) | |||||
| { | |||||
| if(Count > 0) | |||||
| { | |||||
| SetPulse(Pulse, Ferquency, Count, 0, NextPulse); | |||||
| } | |||||
| else | |||||
| { | |||||
| SetPulse(Pulse, Ferquency, -Count, 1, NextPulse); | |||||
| } | |||||
| Options.AllPulse ++; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief 脉冲初始化 | |||||
| * @param[in] Pulse 第几段脉冲 | |||||
| * @param[in] Ferquency 脉冲的频率 | |||||
| * @param[in] Count 脉冲的数量 | |||||
| * @param[in] Direction 脉冲的方向 | |||||
| * @param[in] NextPulse 下一段脉冲 | |||||
| * @return 无 | |||||
| */ | |||||
| void PulseInit(uint8_t Pulse, uint32_t Ferquency, int32_t Count, int8_t NextPulse) | |||||
| { | |||||
| if(Count > 0) | |||||
| { | |||||
| SetPulse(Pulse, Ferquency, Count, 0, NextPulse); | |||||
| } | |||||
| else | |||||
| { | |||||
| SetPulse(Pulse, Ferquency, -Count, 1, NextPulse); | |||||
| } | |||||
| Options.AllPulse = 1; | |||||
| } | |||||
| /** | /** | ||||
| * @brief 设置结果脉冲数 | * @brief 设置结果脉冲数 | ||||
| * @param[in] PulseCount 要设定的脉冲数 | * @param[in] PulseCount 要设定的脉冲数 | ||||
| @@ -208,28 +130,6 @@ void SetNextPulse(void) | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * @brief 获取与CNT相加的基础值 | |||||
| * @param[in] NowPulseNUM 当前的脉冲段数 | |||||
| * @return 基础值 | |||||
| */ | |||||
| uint32_t GetBase(uint8_t NowPulseNUM) | |||||
| { | |||||
| uint32_t temp = 0; | |||||
| if(NowPulseNUM == 0) | |||||
| { | |||||
| temp = 0; | |||||
| } | |||||
| else | |||||
| { | |||||
| for(int i = 0; i < NowPulseNUM; i++) | |||||
| { | |||||
| temp += PulseOutput[i].PulseCount; | |||||
| } | |||||
| } | |||||
| return temp; | |||||
| } | |||||
| /** | /** | ||||
| * @brief 从寄存器读取设置参数 | * @brief 从寄存器读取设置参数 | ||||
| * @return 无 | * @return 无 | ||||
| @@ -259,6 +159,10 @@ void PLSROptionLoad(void) | |||||
| } | } | ||||
| /** | |||||
| * @brief 从寄存器读取脉冲参数 | |||||
| * @return 无 | |||||
| */ | |||||
| void PLSRPluseLoad(void) | void PLSRPluseLoad(void) | ||||
| { | { | ||||
| uint32_t temp_Frequency, temp_PulseCount; | uint32_t temp_Frequency, temp_PulseCount; | ||||
| @@ -304,20 +208,3 @@ void CountSave(void) | |||||
| Register_L[0x2000] = (DatL & 0x00ff); | Register_L[0x2000] = (DatL & 0x00ff); | ||||
| } | } | ||||
| /** | |||||
| * @brief 获取加减速的脉冲数 | |||||
| * @return 无 | |||||
| */ | |||||
| void GetAddCount(void) | |||||
| { | |||||
| if(NowPulse == Options.StartPulse) | |||||
| { | |||||
| AccUpCount = Options.AccUpTime * PulseOutput[NowPulse].Frequency / 1000; | |||||
| } | |||||
| else | |||||
| { | |||||
| AccUpCount = Options.AccUpTime * (PulseOutput[NowPulse].Frequency - PulseOutput[PrePulse].Frequency) / 1000; | |||||
| AccDownCount = Options.AccDownTime * (PulseOutput[PrePulse].Frequency - PulseOutput[NowPulse].Frequency) / 1000; | |||||
| } | |||||
| } | |||||
| @@ -46,19 +46,13 @@ extern int32_t NextPulseEND; | |||||
| /* º¯ÊýÉùÃ÷ */ | /* º¯ÊýÉùÃ÷ */ | ||||
| void SetFrequency(uint8_t SentPost, uint32_t Frequency); | void SetFrequency(uint8_t SentPost, uint32_t Frequency); | ||||
| void SetPulse(uint8_t Pulse, uint32_t Ferquency, int32_t Count, uint8_t Direction, int8_t NextPulse); | |||||
| void PulseBaseInit(uint8_t StartPulse, uint8_t PulseMod, int32_t MAX_Pulse); | |||||
| void PulseStart(void); | void PulseStart(void); | ||||
| float GetAcc(int32_t Start, int32_t End, int32_t AccCount); | float GetAcc(int32_t Start, int32_t End, int32_t AccCount); | ||||
| void AddPulse(uint8_t Pulse, uint32_t Ferquency, int32_t Count, int8_t NextPulse); | |||||
| void PulseInit(uint8_t Pulse, uint32_t Ferquency, int32_t Count, int8_t NextPulse); | |||||
| void SetNextPulse(void); | void SetNextPulse(void); | ||||
| void PLSROptionLoad(void); | void PLSROptionLoad(void); | ||||
| void PLSRPluseLoad(void); | void PLSRPluseLoad(void); | ||||
| void CountSave(void); | void CountSave(void); | ||||
| void GetAddCount(void); | void GetAddCount(void); | ||||
| uint32_t GetBase(uint8_t NowPulseNUM); | |||||
| #endif | #endif | ||||
| @@ -32,15 +32,16 @@ Mcu.CPN=STM32F407IGT6 | |||||
| Mcu.Family=STM32F4 | Mcu.Family=STM32F4 | ||||
| Mcu.IP0=DMA | Mcu.IP0=DMA | ||||
| Mcu.IP1=NVIC | Mcu.IP1=NVIC | ||||
| Mcu.IP10=USART1 | |||||
| Mcu.IP2=RCC | Mcu.IP2=RCC | ||||
| Mcu.IP3=SYS | Mcu.IP3=SYS | ||||
| Mcu.IP4=TIM2 | Mcu.IP4=TIM2 | ||||
| Mcu.IP5=TIM10 | |||||
| Mcu.IP6=TIM11 | |||||
| Mcu.IP7=TIM13 | |||||
| Mcu.IP8=TIM14 | |||||
| Mcu.IP9=USART1 | |||||
| Mcu.IPNb=10 | |||||
| Mcu.IP5=TIM3 | |||||
| Mcu.IP6=TIM10 | |||||
| Mcu.IP7=TIM11 | |||||
| Mcu.IP8=TIM13 | |||||
| Mcu.IP9=TIM14 | |||||
| Mcu.IPNb=11 | |||||
| Mcu.Name=STM32F407I(E-G)Tx | Mcu.Name=STM32F407I(E-G)Tx | ||||
| Mcu.Package=LQFP176 | Mcu.Package=LQFP176 | ||||
| Mcu.Pin0=PF6 | Mcu.Pin0=PF6 | ||||
| @@ -53,11 +54,12 @@ Mcu.Pin14=PA15 | |||||
| Mcu.Pin15=PG12 | Mcu.Pin15=PG12 | ||||
| Mcu.Pin16=PB5 | Mcu.Pin16=PB5 | ||||
| Mcu.Pin17=VP_SYS_VS_Systick | Mcu.Pin17=VP_SYS_VS_Systick | ||||
| Mcu.Pin18=VP_TIM10_VS_ClockSourceINT | |||||
| Mcu.Pin19=VP_TIM11_VS_ClockSourceINT | |||||
| Mcu.Pin18=VP_TIM3_VS_ClockSourceINT | |||||
| Mcu.Pin19=VP_TIM10_VS_ClockSourceINT | |||||
| Mcu.Pin2=PF8 | Mcu.Pin2=PF8 | ||||
| Mcu.Pin20=VP_TIM13_VS_ClockSourceINT | |||||
| Mcu.Pin21=VP_TIM14_VS_ClockSourceINT | |||||
| Mcu.Pin20=VP_TIM11_VS_ClockSourceINT | |||||
| Mcu.Pin21=VP_TIM13_VS_ClockSourceINT | |||||
| Mcu.Pin22=VP_TIM14_VS_ClockSourceINT | |||||
| Mcu.Pin3=PF9 | Mcu.Pin3=PF9 | ||||
| Mcu.Pin4=PH0-OSC_IN | Mcu.Pin4=PH0-OSC_IN | ||||
| Mcu.Pin5=PH1-OSC_OUT | Mcu.Pin5=PH1-OSC_OUT | ||||
| @@ -65,7 +67,7 @@ Mcu.Pin6=PH6 | |||||
| Mcu.Pin7=PH7 | Mcu.Pin7=PH7 | ||||
| Mcu.Pin8=PH8 | Mcu.Pin8=PH8 | ||||
| Mcu.Pin9=PH9 | Mcu.Pin9=PH9 | ||||
| Mcu.PinsNb=22 | |||||
| Mcu.PinsNb=23 | |||||
| Mcu.ThirdPartyNb=0 | Mcu.ThirdPartyNb=0 | ||||
| Mcu.UserConstants= | Mcu.UserConstants= | ||||
| Mcu.UserName=STM32F407IGTx | Mcu.UserName=STM32F407IGTx | ||||
| @@ -84,6 +86,7 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 | |||||
| NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | ||||
| NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false | NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false | ||||
| NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true | NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true | ||||
| NVIC.TIM3_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true | |||||
| NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true | NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true | ||||
| NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | ||||
| PA10.Mode=Asynchronous | PA10.Mode=Asynchronous | ||||
| @@ -98,6 +101,9 @@ PA15.Locked=true | |||||
| PA15.Signal=S_TIM2_CH1_ETR | PA15.Signal=S_TIM2_CH1_ETR | ||||
| PA9.Mode=Asynchronous | PA9.Mode=Asynchronous | ||||
| PA9.Signal=USART1_TX | PA9.Signal=USART1_TX | ||||
| PB5.GPIOParameters=GPIO_PuPd,GPIO_Label | |||||
| PB5.GPIO_Label=X4 | |||||
| PB5.GPIO_PuPd=GPIO_PULLUP | |||||
| PB5.Locked=true | PB5.Locked=true | ||||
| PB5.Signal=GPIO_Input | PB5.Signal=GPIO_Input | ||||
| PF6.Locked=true | PF6.Locked=true | ||||
| @@ -108,6 +114,9 @@ PF8.Locked=true | |||||
| PF8.Signal=S_TIM13_CH1 | PF8.Signal=S_TIM13_CH1 | ||||
| PF9.Locked=true | PF9.Locked=true | ||||
| PF9.Signal=S_TIM14_CH1 | PF9.Signal=S_TIM14_CH1 | ||||
| PG12.GPIOParameters=GPIO_PuPd,GPIO_Label | |||||
| PG12.GPIO_Label=X5 | |||||
| PG12.GPIO_PuPd=GPIO_PULLUP | |||||
| PG12.Locked=true | PG12.Locked=true | ||||
| PG12.Signal=GPIO_Input | PG12.Signal=GPIO_Input | ||||
| PH0-OSC_IN.Mode=HSE-External-Oscillator | PH0-OSC_IN.Mode=HSE-External-Oscillator | ||||
| @@ -217,6 +226,9 @@ TIM13.Channel=TIM_CHANNEL_1 | |||||
| TIM13.IPParameters=Channel | TIM13.IPParameters=Channel | ||||
| TIM14.Channel=TIM_CHANNEL_1 | TIM14.Channel=TIM_CHANNEL_1 | ||||
| TIM14.IPParameters=Channel | TIM14.IPParameters=Channel | ||||
| TIM3.IPParameters=Prescaler,Period | |||||
| TIM3.Period=999 | |||||
| TIM3.Prescaler=72-1 | |||||
| USART1.BaudRate=9600 | USART1.BaudRate=9600 | ||||
| USART1.IPParameters=VirtualMode,BaudRate,Parity,WordLength | USART1.IPParameters=VirtualMode,BaudRate,Parity,WordLength | ||||
| USART1.Parity=PARITY_ODD | USART1.Parity=PARITY_ODD | ||||
| @@ -232,4 +244,6 @@ VP_TIM13_VS_ClockSourceINT.Mode=Enable_Timer | |||||
| VP_TIM13_VS_ClockSourceINT.Signal=TIM13_VS_ClockSourceINT | VP_TIM13_VS_ClockSourceINT.Signal=TIM13_VS_ClockSourceINT | ||||
| VP_TIM14_VS_ClockSourceINT.Mode=Enable_Timer | VP_TIM14_VS_ClockSourceINT.Mode=Enable_Timer | ||||
| VP_TIM14_VS_ClockSourceINT.Signal=TIM14_VS_ClockSourceINT | VP_TIM14_VS_ClockSourceINT.Signal=TIM14_VS_ClockSourceINT | ||||
| VP_TIM3_VS_ClockSourceINT.Mode=Internal | |||||
| VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT | |||||
| board=custom | board=custom | ||||