#include "stdio.h" #include #include #include "usb_device.h" #include "usbd_cdc_if.h" #include "./SYSTEM/sys/sys.h" #include "./SYSTEM/usart/usart.h" #include "./BSP/AD7606/ControlCommandReceive.h" #include "./SYSTEM/adc/adc.h" #include "./BSP/CD4051B/cd4051b.h" #include "./BSP/AD7606/AD7606.h" #include "./SYSTEM/spi3/spi3.h" #include "./BSP/TP1000/TP1000.h" void CollectionStar(void); /* 开始采样函数 */ void CollectionStop(void); /* 停止采样函数 */ void CollectionStar(void); void OffLineTempStart(void); /*断线检测、温度检测开始函数 */ int main(void) { HAL_Init(); HAL_Delay(1000); /* 延时等待晶振起振 */ sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */ Data_to_ADbuf(); /* 初始化数组 */ HAL_Delay(1000); /* 延时等待晶振起振 */ MX_USB_DEVICE_Init(); /* USB初始化 */ HAL_Delay(30); /* 延时等待usb初始化完成 */ usart_init(115200); /* 串口初始化为115200 */ MX_ADC3_Init(); /* adc3初始化 */ CD4051B_Init(); /* cd4051b初始化 */ TP1000_SPI3_Init(); /* SPI3初始化 */ TP1000_SPI3_NSS_Init(); /* SPI3片选引脚初始化 */ TP1000_Init(); /* TP1000初始化 */ MX_FSMC_Init(); /* 初始化FSMC */ AD7606_Init(); /* 初始化AD7606 */ OffLineTempStart(); /* 断线检测、温度检测开始 */ while (1) { /* 循环等待判断USB是否接受到消息 接收到消息标志位:Control_Ins_Flag = 1*/ if(Control_Ins_Flag==1){ Instruct_Judgment(); //处理USB传输的指令 /* 判断是否采样 */ if(sampling_control==1){ CollectionStar(); //开始采样 } else if(sampling_control==0){ CollectionStop(); //停止采样 } Control_Ins_Flag = 0; //修改标志位,防止重复进入 } } } /* 开始采样程序,包括断线检测、振动数据采集、转速采集 */ void CollectionStar(void){ /* AD7606振动采集函数 包含转速采集 */ AD7606_StartRecord(); /* 开始采集 */ } /* 停止采样程序 */ void CollectionStop(void){ AD7606_StopRecord(); OffLineTempStart(); } void OffLineTempStart(void){ /* 调用断线检测函数 将结果保存在数组中*/ DetectionResults results = OffLineDetection(); // 调用函数并接收返回的结果 DataArray[6172] = results.result1; // 结果以LSB格式保存 DataArray[14396] = results.result1; // 结果以LSB格式保存 /* 调用温度检测函数 将结果保存在数组中*/ tp1000_cs_drdy TP1000Results1 = Get_Hardware_SPI3_Temp(); //调用函数并接收返回的结果 tp1000_cs_drdy TP1000Results2 = Get_Hardware_SPI3_Temp(); //调用函数并接收返回的结果 tp1000_cs_drdy TP1000Results = Get_Hardware_SPI3_Temp(); //调用函数并接收返回的结果 /* 将f_temperature转换为字符串并存入数组 */ DataArray[7200] = TP1000Results.f_temperature1[0]; DataArray[7201] = TP1000Results.f_temperature1[1]; DataArray[7202] = TP1000Results.f_temperature2[0]; DataArray[7203] = TP1000Results.f_temperature2[1]; DataArray[7204] = TP1000Results.f_temperature3[0]; DataArray[7205] = TP1000Results.f_temperature3[1]; DataArray[15424] = TP1000Results.f_temperature1[0]; DataArray[15425] = TP1000Results.f_temperature1[1]; DataArray[15426] = TP1000Results.f_temperature2[0]; DataArray[15427] = TP1000Results.f_temperature2[1]; DataArray[15428] = TP1000Results.f_temperature3[0]; DataArray[15429] = TP1000Results.f_temperature3[1]; } void delay_us(__IO uint32_t delay) { int last, curr, val; int temp; while (delay != 0) { temp = delay > 900 ? 900 : delay; last = SysTick->VAL; curr = last - CPU_FREQUENCY_MHZ * temp; if (curr >= 0) { do { val = SysTick->VAL; } while ((val < last) && (val >= curr)); } else { curr += CPU_FREQUENCY_MHZ * 1000; do { val = SysTick->VAL; } while ((val <= last) || (val > curr)); } delay -= temp; } }