2022-05-29 08:40 AM
Hi, so I've chosen to use STM32G031J6M6 8-pin version for an audio level meter project to get me started. I'm using pin 1 as the adc input, 2 and 3 are 3v3 and gnd, obviously. I was hoping to use the remaining 5 pins as GPIO outputs attached to LEDs for the level display. I'm using the DISCO board to program.
I'm pretty sure I bricked one of my chips already though, I think because I assigned the NRST (pin4) as well as the SWDIO and SWDCLK (pins 7 and 8) as GPIO outs and I guess then that there was no way to hold the chip in reset and program or debug it? The only other thing I did before it was unresponsive was to probe some of the board traces with my multimeter in diode/continuity mode.
I'm trying to be careful not to break another chip so I wanted to be sure before assigning those pins.
Is there a way I can use all these pins as GPIO output but not lock myself out of programing / debugging the chip? I read something about maybe adding a delay before the pins are assigned? Would this be as simple as placing a HAL_Delay(1000) towards the top of the main function in main.c? I'm using the CubeIDE and it's auto code generation functionality to assign the pins. I am still fairly new to this level of MCU programming having come from using Arduino so I might need baby steps.
Thanks.
2022-05-30 07:10 AM
Thanks for the response. So I guess I'd have to add this delay in 'int main(void)' right?
The generated code goes: HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ADC1_Init(); MX_TIM16_Init(); HAL_TIM_Base_Start_IT(&htim16); then into the while loop.
From what you have said I'm guessing that the HAL_Delay(5000); should be added after SystemClock_Config() but before MX_GPIO_Init(). Is this correct?
Yeah I discovered yesterday to use the NRST pin I'd have to use STM32CubeProgrammer to set the User Option Byte so I can use that as GPIO. Attempting to use it before doing that (ie. setting it to GPIO output and attaching an LED through a current limiting resistor) just seemed to keep the chip in a reset state.
So to reiterate, If I am to set the NRST user option byte so that it is a GPIO output and I am also to set the SWDIO and SWDCLK pins as GPIO outputs I am likely to lock myself out of reprogramming or debugging the chip unless I prepare it before hand with this 5 to 10s delay which will give me a window of opportunity to access the chip from power on before it reassigns the pins.
Am I talking sense? Thanks again.
2023-08-29 06:09 AM
Hello,
I tried to do as you say and the problem was solved. I had some chips stuck. Thanks for your help.
Best regards.
Roberto