实际上,我正在使用STM32L053微控制器进行测试,并且我正在将stm32cubeide与hal配合使用。
这是我使用此微控制器和ide的第一步。我正在使用通过SPI和电子纸stm32库(https://github.com/soonuse/epd-library-stm32/tree/master/1.54inch_e-paper/stm32)连接的电子纸
在我的第一个周期中,电子纸运行良好,可以显示一些图形和文字,但是当再次启动时,电子纸什么也没显示。如果我使用停止模式,情况也是如此。如果我使用待机模式,则电子纸效果很好,因为在这种模式下,微控制器被重置,程序启动。
我认为我在SPI接口上出错了。
这是我的SPI初始化代码:
/**
* @brief SPI1 Initialization Function
* @param None
* @retval None
*/
static void MX_SPI1_Init(void)
{
/* USER CODE BEGIN SPI1_Init 0 */
/* USER CODE END SPI1_Init 0 */
/* USER CODE BEGIN SPI1_Init 1 */
/* USER CODE END SPI1_Init 1 */
/* SPI1 parameter configuration*/
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_1LINE;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
if (HAL_SPI_Init(&hspi1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN SPI1_Init 2 */
/* USER CODE END SPI1_Init 2 */
}
这是在停止模式下输入的代码以及将要执行的下一行代码:
/* Enter Stop Mode */
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
HAL_UART_Transmit(&hlpuart1, (uint8_t*)”Sleep mode activated...\r\n”, sizeof(“Sleep mode activated...\r\n”), 20);
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
/* Configures system clock after wake-up from STOP: enable HSE, PLL and select
PLL as system clock source (HSE and PLL are disabled in STOP mode) */
//HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC_Init();
MX_LPUART1_UART_Init();
MX_USART2_UART_Init();
MX_RTC_Init();
MX_SPI1_Init();
MX_TIM2_Init();
HAL_UART_Transmit(&hlpuart1, (uint8_t*)”Wake-Up...\r\n”, sizeof(“Wake-Up...\r\n”), 20);