本程序编写基于秉火霸道STM32F103ZET6运行环境。
USB DFU(Download Firmware Update)固件更新
在这篇文章里我们已经知道,当PD3为低电平的时候,USB接口供电,即可用,这一点在上一篇文章已经讲解了,我们在STM32CubeMX把这个管脚默认拉低即可。
1、STM32CubeMX配置
1.1、USB使能
1.2、时钟
1.3、调试接口
1.4、USB设备
1.5 生成Keil工程
2、编写程序,实现类似printf的功能
2.1、添加打印函数
打开u***d_cdc_if.c这个文件,然后在用户代码编写区添加打印函数:
void u***_printf(const char *format, ...){ va_list args; uint32_t length; va_start(args, format); length = vsnprintf((char *)UserTxBufferFS, APP_TX_DATA_SIZE, (char *)format, args); va_end(args); CDC_Transmit_FS(UserTxBufferFS, length);}
注意,这里我们用到了可变参,所以需要添加头文件#include
然后在u***d_cdc_if.h记得对u***_printf进行声明。
/* USER CODE BEGIN EXPORTED_FUNCTIONS */void u***_printf(const char *format, ...);/* USER CODE END EXPORTED_FUNCTIONS */
2.2、调用打印函数
接下来在main函数的while(1)中调用u***_printf,注意需要包含u***d_cdc_if.h头文件
int main(void){ //略.... while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ u***_printf("Hello USB VCOMn"); HAL_Delay(1000); } //略.... }
然后我们打开串口调试助手,这里我用的是sscom:
可以看到数据已经在打印了。
至此USB CDC功能验证成功!
本程序编写基于秉火霸道STM32F103ZET6运行环境。
USB DFU(Download Firmware Update)固件更新
在这篇文章里我们已经知道,当PD3为低电平的时候,USB接口供电,即可用,这一点在上一篇文章已经讲解了,我们在STM32CubeMX把这个管脚默认拉低即可。
1、STM32CubeMX配置
1.1、USB使能
1.2、时钟
1.3、调试接口
1.4、USB设备
1.5 生成Keil工程
2、编写程序,实现类似printf的功能
2.1、添加打印函数
打开u***d_cdc_if.c这个文件,然后在用户代码编写区添加打印函数:
void u***_printf(const char *format, ...){ va_list args; uint32_t length; va_start(args, format); length = vsnprintf((char *)UserTxBufferFS, APP_TX_DATA_SIZE, (char *)format, args); va_end(args); CDC_Transmit_FS(UserTxBufferFS, length);}
注意,这里我们用到了可变参,所以需要添加头文件#include
然后在u***d_cdc_if.h记得对u***_printf进行声明。
/* USER CODE BEGIN EXPORTED_FUNCTIONS */void u***_printf(const char *format, ...);/* USER CODE END EXPORTED_FUNCTIONS */
2.2、调用打印函数
接下来在main函数的while(1)中调用u***_printf,注意需要包含u***d_cdc_if.h头文件
int main(void){ //略.... while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ u***_printf("Hello USB VCOMn"); HAL_Delay(1000); } //略.... }
然后我们打开串口调试助手,这里我用的是sscom:
可以看到数据已经在打印了。
至此USB CDC功能验证成功!
举报