728x90
반응형
0. driver
1. STM32 Cube
2. 소스
usbd_cdc_if.c
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
/* USER CODE BEGIN 6 */
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
Buf[*Len] = 0; // last Add Null
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
return (USBD_OK);
/* USER CODE END 6 */
}
main.c
#include "main.h"
#include "stm32f1xx_hal.h"
#include "usb_device.h"
/* USER CODE BEGIN Includes */
#define APP_RX_DATA_SIZE 64
#define APP_TX_DATA_SIZE 64
extern uint8_t UserRxBufferFS[APP_RX_DATA_SIZE];
extern uint8_t UserTxBufferFS[APP_TX_DATA_SIZE];
/* USER CODE END Includes */
/* Private variables ---------------------------------------------------------*/
I2C_HandleTypeDef hi2c1;
UART_HandleTypeDef huart3;
.
.
.
int main(void)
{
MX_GPIO_Init();
MX_USB_DEVICE_Init();
MX_USART3_UART_Init();
MX_I2C1_Init();
/* USER CODE BEGIN 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
uint16_t len = strlen((const char*)UserRxBufferFS);
if(len > 0)
{
strncpy((char *)UserTxBufferFS, (const char*)UserRxBufferFS, len);
strcat((char *)UserTxBufferFS, "_IN\r\n");
CDC_Transmit_FS((uint8_t*)UserTxBufferFS, strlen((const char*)UserTxBufferFS));
memset(UserRxBufferFS, 0, sizeof(UserRxBufferFS));
memset(UserTxBufferFS, 0, sizeof(UserTxBufferFS));
}
HAL_Delay(500);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
3. 결과
4. CDC printf 적용하기
https://hnydiy.tistory.com/146
728x90
반응형
'공부 > STM32F1' 카테고리의 다른 글
30.[stm32f103][hal] us delay 만들기 (0) | 2018.10.12 |
---|---|
29.[stm32f103][hal] i2c_AT2402 eeprom (0) | 2018.10.10 |
27.[stm32f103][hal] ADC (3) -DMA ADC (3) | 2018.02.28 |
26.[stm32f103][hal] ADC (2) - Polling Multi 모드 (2) | 2017.12.21 |
25.[stm32f103][hal] ADC (1) - Polling 모드 (0) | 2017.12.19 |