Firmware Bootcamp Proposed Amendments
It has come to my attention, that in the perspective of someone who has never done any firmware related work, or is even new to coding, this boot camp would be extremely challenging. As a design team who’s philosophy is built around learning, at any experience level, I would feel pretty bad if the reason someone didn’t join WARG was because they couldn’t finish the boot camp and felt demoralized.
If, and only if, we find that the completion rate of new boot campers (specially those who had little to no firmware experience) to be very low (less than 50%?) I believe the boot camp should be revised to be more guided.
Personally, I think the 2022 Firmware boot camp is very well documented when it comes to setting up the project and I think many boot campers may have the most issue conceptually understanding what should be done in the GUI, what the HAL can provide them with (and maybe what the heck it even is), and what should be done in actual code that they write
Here are some methods we can make the boot camp more guided:
Predefine important macros that just have to be filled out
Could even go as far as coding the equation for them in the main() function. So, essentially they just have to do the calculations.
Explicit comments everywhere:
Within the main while loop, using comments, we can specifically define what type of code should go where, for example:
/***************************** Define Constants *****************************/
/***************************** Create SPI buffers *****************************/
/***************************** Send data over SPI *****************************/
//set chip select line (0 or 1, this must be researched)
//transmit and receive data (call a HAL function from Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h)
//set chip select line (0 or 1, this must be researched)
/***************************** Calculations based on value received from ADC *****************************/
/***************************** Set the TIM register *****************************/
//call a function from the HAL (from the file Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h) that will set the capture compare register to change the duty cycle of the PWM signal
In terms of setting up the project, it seems to be pretty well defined, all we could do is add more screenshots circling specific data fields that need to be populated