使用USB输出时间和步数同步,一组十个字节,帧头0d ff,前四个字节编码器值,后四个字节是时间ms
This commit is contained in:
@ -21,10 +21,12 @@
|
||||
#include "dma.h"
|
||||
#include "tim.h"
|
||||
#include "usart.h"
|
||||
#include "usb_device.h"
|
||||
#include "gpio.h"
|
||||
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "usbd_cdc_if.h"
|
||||
#include "retarget.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
@ -49,14 +51,15 @@
|
||||
volatile uint32_t G_StartMillis = 0;
|
||||
volatile uint32_t G_CurrentMillis = 0;
|
||||
int enc;
|
||||
uint8_t buf[10];
|
||||
int enc_old;
|
||||
uint8_t buf[1000];
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
void SystemClock_Config(void);
|
||||
static void MPU_Config(void);
|
||||
/* USER CODE BEGIN PFP */
|
||||
void data_shift();
|
||||
void data_shift(int i);
|
||||
/* USER CODE END PFP */
|
||||
|
||||
/* Private user code ---------------------------------------------------------*/
|
||||
@ -104,6 +107,7 @@ int main(void)
|
||||
MX_DMA_Init();
|
||||
MX_TIM2_Init();
|
||||
MX_USART1_UART_Init();
|
||||
MX_USB_DEVICE_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
RetargetInit(&huart1);
|
||||
HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL);
|
||||
@ -117,11 +121,21 @@ int main(void)
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
for(int i=0;i<1000;i+=10)
|
||||
{
|
||||
enc_old = __HAL_TIM_GET_COUNTER(&htim2);//获取第一次定时器的值
|
||||
enc = enc_old;
|
||||
while(abs(enc-enc_old)==0) {
|
||||
enc = __HAL_TIM_GET_COUNTER(&htim2);//获取第二次定时器的值
|
||||
}
|
||||
|
||||
enc = __HAL_TIM_GET_COUNTER(&htim2);//获取定时器的值
|
||||
G_CurrentMillis = HAL_GetTick()-G_StartMillis;
|
||||
data_shift();
|
||||
HAL_UART_Transmit_DMA(&huart1, buf, sizeof(buf));
|
||||
G_CurrentMillis = HAL_GetTick()-G_StartMillis;
|
||||
data_shift(i);
|
||||
}
|
||||
|
||||
//HAL_UART_Transmit_DMA(&huart1, buf, sizeof(buf));
|
||||
CDC_Transmit_HS(buf, sizeof(buf));
|
||||
//HAL_Delay(10);
|
||||
// printf("start time:%lu\r\n", G_StartMillis);
|
||||
// printf("current time:%lu\r\n", G_CurrentMillis);
|
||||
|
||||
@ -158,8 +172,9 @@ void SystemClock_Config(void)
|
||||
/** Initializes the RCC Oscillators according to the specified parameters
|
||||
* in the RCC_OscInitTypeDef structure.
|
||||
*/
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSE;
|
||||
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
||||
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
|
||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
||||
RCC_OscInitStruct.PLL.PLLM = 2;
|
||||
@ -196,17 +211,17 @@ void SystemClock_Config(void)
|
||||
|
||||
/* USER CODE BEGIN 4 */
|
||||
|
||||
void data_shift(){
|
||||
buf[0] = (uint8_t)(enc & 0xFF);
|
||||
buf[1] = (uint8_t)((enc >> 8) & 0xFF);
|
||||
buf[2] = (uint8_t)((enc >> 16) & 0xFF);
|
||||
buf[3] = (uint8_t)((enc >> 24) & 0xFF);
|
||||
buf[4] = G_CurrentMillis & 0xFF;
|
||||
buf[5] = (G_CurrentMillis >> 8) & 0xFF;
|
||||
buf[6] = (G_CurrentMillis >> 16) & 0xFF;
|
||||
buf[7] = (G_CurrentMillis >> 24) & 0xFF;
|
||||
buf[8] = 0x0d;
|
||||
buf[9] = 0xff;
|
||||
void data_shift(int i){
|
||||
buf[i+0] = (uint8_t)(enc & 0xFF);
|
||||
buf[i+1] = (uint8_t)((enc >> 8) & 0xFF);
|
||||
buf[i+2] = (uint8_t)((enc >> 16) & 0xFF);
|
||||
buf[i+3] = (uint8_t)((enc >> 24) & 0xFF);
|
||||
buf[i+4] = G_CurrentMillis & 0xFF;
|
||||
buf[i+5] = (G_CurrentMillis >> 8) & 0xFF;
|
||||
buf[i+6] = (G_CurrentMillis >> 16) & 0xFF;
|
||||
buf[i+7] = (G_CurrentMillis >> 24) & 0xFF;
|
||||
buf[i+8] = 0x0d;
|
||||
buf[i+9] = 0xff;
|
||||
}
|
||||
/* USER CODE END 4 */
|
||||
|
||||
|
Reference in New Issue
Block a user