[url=]#申请原创#@21小跑堂 [/url]
STM32的很多系列都带有USB功能配置USB时钟
USB的工作时钟是48M,用HSI倍频到48M:
添加USB功能
添加VCP功能
发送
在main.c这个文件里面添加如下代码,就可以发送数据,虚似串口的波特率随便选择一个即可:
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- char str[] = "Hello World!\n";
- while (1)
- {
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- CDC_Transmit_FS((uint8_t*)str, 13);
- HAL_Delay(100);
- }
- /* USER CODE END 3 */
接收
在CDC_Receive_FS这个函数里面就可以得到VCP发送过来的数据:
重映射printf输出
也可以把USB作为printf来输出log信息
- int fputc(int ch, FILE *f)
- {
- while(CDC_Transmit_FS((uint8_t *)&ch, 1) == USBD_BUSY);
- return ch;
- }
效果
|