Question
Getting GPIO pin to toggle in Blinky
I'm trying to get my embedded skills back from many years ago, so I have an STM32L475 L475E board I am working with. I am using Blinky to reference from, but I can't get the output pin to toggle in the thread for the flashing led.
/* Private defines -----------------------------------------------------------*/
/* USER CODE BEGIN Private defines */
#define I_GPIO_PORT_A GPIOA
#define I_GPIO_PORT_B GPIOB
#define I_GPIO_PORT_C GPIOC
#define I_GPIO_PORT_D GPIOD
#define IT_ENCODER_CH1_A GPIO_PIN_0
#define IT_ENCODER_CH2_A GPIO_PIN_1
#define I_ENCODER_CH1_B GPIO_PIN_2
#define I_ENCODER_CH2_B GPIO_PIN_7
#define IT_FRONT_BUMPER GPIO_PIN_2
#define IT_REAR_BUMPER GPIO_PIN_3
#define IT_LF_SIDE_OPTIC GPIO_PIN_4
#define IT_LR_SIDE_OPTIC GPIO_PIN_5
#define IT_RF_SIDE_OPTIC GPIO_PIN_8
#define O_DIR_CH1 GPIO_PIN_1
#define O_PWM_CH1 GPIO_PIN_2
#define O_PWM_CH2 GPIO_PIN_5
#define O_DIR_CH2 GPIO_PIN_14
#define IT_RR_SIDE_OPTIC GPIO_PIN_15
-----------------------------------------------------------------------------------------------------------
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* Timer data for PWM */
// TM_PWM_TIM_t TIM_Data;
/* GPIO Ports Clock Enable */
// __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(I_GPIO_PORT_B, O_PWM_CH1, GPIO_PIN_SET);
// /*Configure GPIO pin Output Level */
// HAL_GPIO_WritePin(I_GPIO_PORT_B, O_PWM_CH1, GPIO_PIN_RESET);
/*Configure GPIO pin : O_PWM_CH1 */
GPIO_InitStruct.Pin = O_PWM_CH1;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(I_GPIO_PORT_B, &GPIO_InitStruct);
// /*Configure GPIO pin Output Level */
// HAL_GPIO_WritePin(I_GPIO_PORT_B, O_PWM_CH1, GPIO_PIN_SET);
// /*Configure GPIO pin Output Level */
// HAL_GPIO_WritePin(I_GPIO_PORT_B, O_PWM_CH1, GPIO_PIN_RESET);
--------------------------------------------------------------------------------------------
Thread:
/*---------------------------------------------------------------------------
thrLED: blink LED
*---------------------------------------------------------------------------*/
__NO_RETURN static void thrLED (void *arg) {
uint32_t active_flag = 0U;
(void)arg;
for (;;) {
if (osThreadFlagsWait(1U, osFlagsWaitAny, 0U) == 1U) {
active_flag ^= 1U;
}
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(I_GPIO_PORT_B, O_PWM_CH1, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(I_GPIO_PORT_B, O_DIR_CH1, GPIO_PIN_RESET);
if (active_flag == 1U) {
vioSetSignal(vioLED0, vioLEDoff); // Switch LED0 off
vioSetSignal(vioLED1, vioLEDon); // Switch LED1 on
osDelay(50U); // Delay 100 ms
vioSetSignal(vioLED0, vioLEDon); // Switch LED0 on
vioSetSignal(vioLED1, vioLEDoff); // Switch LED1 off
osDelay(50U); // Delay 100 ms
}
else {
vioSetSignal(vioLED0, vioLEDon); // Switch LED0 on
osDelay(700U); // Delay 500 ms
vioSetSignal(vioLED0, vioLEDoff); // Switch LED0 off
osDelay(700U); // Delay 500 ms
}
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(I_GPIO_PORT_B, O_PWM_CH1, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(I_GPIO_PORT_B, O_DIR_CH1, GPIO_PIN_SET);
}
}Whats my issue please?
