/* * user_main.c * * Created on: 2023年8月3日 * Author: wyf */ /* * user_main.c * * Created on: 2023年6月25日 * Author: wyf */ #include "user.h" void user_main(void) { user_init(); RS485ADDR = *(uint16_t*)FLASH485_ADDR; //获取从机地址 if(RS485ADDR == 0x0000 || RS485ADDR == 0xFFFF) { RS485ADDR = 1; } pwm_pulse = *(uint16_t*)(FLASH485_ADDR+2); //获取脉宽 if(pwm_pulse == 0x0000 || pwm_pulse == 0xFFFF) { pwm_pulse = 1000; } __HAL_TIM_SET_COMPARE(&htim14,TIM_CHANNEL_1,pwm_pulse); //设置脉宽 HAL_TIM_Base_Start_IT(&htim14); HAL_TIM_PWM_Start_IT(&htim14, TIM_CHANNEL_1); //开启PWM波输出 HAL_UART_DMAStop(&huart1);//复位DMA //串口DMA接收 HAL_UART_Receive_DMA(&huart1,(uint8_t *)RxBuff,sizeof(RxBuff)); HAL_GPIO_WritePin(TX485_PN_GPIO_Port, TX485_PN_Pin, GPIO_PIN_RESET);//使能485芯片接收 HAL_ADC_Start_DMA(&hadc, (uint32_t*)RegularConvData_Tab, ADCBUFF_LEN); //开启ADC转换 bsp_StartAutoTimer(0,15); //计算波形峰峰值 bsp_StartAutoTimer(1,500); //led1闪烁, bsp_StartAutoTimer(4,1000); //未检测到电机信号 // bsp_StartAutoTimer(5,1000); while(1) { if(bsp_CheckTimer(0)) { HAL_ADC_Stop_DMA(&hadc); ADC_MAX(); //计算波形峰峰 HAL_ADC_Start_DMA(&hadc, (uint32_t*)RegularConvData_Tab, ADCBUFF_LEN); } if(bsp_CheckTimer(1)) { HAL_IWDG_Refresh(&hiwdg); //喂狗 // HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); } if(bsp_CheckTimer(2)) //在外部中断回调函数中开启,在定时器4中关闭 { HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); //每500ms加一次,一小时7200次 } if(bsp_CheckTimer(4)) { bsp_StopTimer(2); HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); motor_state = 1; //不正常 } if(usart_count >0) { Usart_Receive(); usart_count = 0; } } }