Difference between revisions of "Serial Debugging"
m (Lth moved page Serial Debugging on USB Virtual Com Port to Serial Debugging) |
|||
Line 1: | Line 1: | ||
− | [[Category:STM32]][[Category:STM32 Development]][[Category:STM32CubeMX]][[Category:STM32CubeIde]][[Category:STM32 HAL]]{{metadesc|How to | + | [[Category:STM32]][[Category:STM32 Development]][[Category:STM32CubeMX]][[Category:STM32CubeIde]][[Category:STM32 HAL]]{{metadesc|How to do Serial debugging}} |
+ | == Introduction == | ||
+ | |||
+ | == U(S)ART Serial == | ||
+ | |||
+ | == Virtual COM port over USB == | ||
+ | |||
Creating and using a virtual COM port over USB is really easy (provided the USB port is not used for anything else). | Creating and using a virtual COM port over USB is really easy (provided the USB port is not used for anything else). | ||
Line 56: | Line 62: | ||
Notice the virtual com port can automatically adjust to a number of different speed settings. Above setting of 921600 appears to be around the max. | Notice the virtual com port can automatically adjust to a number of different speed settings. Above setting of 921600 appears to be around the max. | ||
+ | |||
+ | == Miscellaneous Links == | ||
+ | |||
+ | To be added |
Revision as of 03:56, 8 August 2021
Introduction
U(S)ART Serial
Virtual COM port over USB
Creating and using a virtual COM port over USB is really easy (provided the USB port is not used for anything else).
First step is to enable USB in device mode under Connectivity in STM32CubeMX:
Next, set the USB Device Middleware to Communication Device Class:
Generating code and the device should now show up as a virtual COM port.
Final step is to redirect output from "printf" to go to this virtual COM port rather than one of the UARTS.
int _write(int file, char *ptr, int len) { CDC_Transmit_FS((uint8_t *)ptr, len); return len; }
You can now use printf to print debugging statements - for example:
uint32_t then = 0, now = 0; while (1) { now = HAL_GetTick(); if (now % 1000 == 0 && now != then) { printf("Tick (now = %lu)\n", now / 1000); then = now; } }
The above "while" loop result in the following output on the virtual serial port:
lth@ncpws04:~$ microcom -f -s 921600 -p /dev/ttyACM0 connected to /dev/ttyACM0 Escape character: Ctrl-\ Type the escape character to get to the prompt. Tick (now = 1) Tick (now = 2) Tick (now = 3) Tick (now = 4) Tick (now = 5) Tick (now = 6) ...
Notice the virtual com port can automatically adjust to a number of different speed settings. Above setting of 921600 appears to be around the max.
Miscellaneous Links
To be added