STM32L451 / 452 kompatibiita

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pátek Červenec 2 14:05:49 CEST 2021


Zdravim, uz pul dne badam nad divnym problemem, asi je chyba mezi 
klavesnici a zidli.

Nahradil jsem 451 za 452 a uz pri inicializaci GPIO jsem narazil na 
odlisne chovani, dela to puvodni binarni kod pro 451 i novy kod pro 452.

Vecer budu badat dal, jen jestli nekdo na prvni pohled nevi v cem je 
odchylka...

Problem vznika na radku s vykricniky

#define LEDB_Pin GPIO_PIN_13
#define LEDB_GPIO_Port GPIOC
#define LEDR_Pin GPIO_PIN_14
#define LEDR_GPIO_Port GPIOC
#define DISP_BS_Pin GPIO_PIN_5
#define DISP_BS_GPIO_Port GPIOA
#define TP_B0_Pin GPIO_PIN_0
#define TP_B0_GPIO_Port GPIOB
#define TP_B1_Pin GPIO_PIN_1
#define TP_B1_GPIO_Port GPIOB
#define TP_B2_Pin GPIO_PIN_2
#define TP_B2_GPIO_Port GPIOB
#define USART1_NRE_Pin GPIO_PIN_11
#define USART1_NRE_GPIO_Port GPIOA
#define DISP_NSS_Pin GPIO_PIN_15
#define DISP_NSS_GPIO_Port GPIOA
#define DISP_POWER_Pin GPIO_PIN_6
#define DISP_POWER_GPIO_Port GPIOB
#define DISP_NBUSY_Pin GPIO_PIN_7
#define DISP_NBUSY_GPIO_Port GPIOB
#define DISP_NRST_Pin GPIO_PIN_8
#define DISP_NRST_GPIO_Port GPIOB
#define DISP_DC_Pin GPIO_PIN_9
#define DISP_DC_GPIO_Port GPIOB

void MX_GPIO_Init(void)
{

   GPIO_InitTypeDef GPIO_InitStruct = {0};

   /* GPIO Ports Clock Enable */
   __HAL_RCC_GPIOC_CLK_ENABLE();
   __HAL_RCC_GPIOH_CLK_ENABLE();
   __HAL_RCC_GPIOA_CLK_ENABLE();
   __HAL_RCC_GPIOB_CLK_ENABLE();

   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(GPIOC, LEDB_Pin|LEDR_Pin, GPIO_PIN_RESET);

   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(DISP_BS_GPIO_Port, DISP_BS_Pin, GPIO_PIN_RESET);

   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(GPIOB, TP_B0_Pin|TP_B1_Pin|TP_B2_Pin|DISP_POWER_Pin
                           |DISP_NRST_Pin|DISP_DC_Pin, GPIO_PIN_RESET);

   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(GPIOA, USART1_NRE_Pin|DISP_NSS_Pin, GPIO_PIN_SET);

   /*Configure GPIO pins : PCPin PCPin */
   GPIO_InitStruct.Pin = LEDB_Pin|LEDR_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

   /*Configure GPIO pin : PtPin */
   GPIO_InitStruct.Pin = DISP_BS_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(DISP_BS_GPIO_Port, &GPIO_InitStruct);

   /*Configure GPIO pins : PBPin PBPin PBPin PBPin
                            PBPin */
   GPIO_InitStruct.Pin = TP_B0_Pin|TP_B1_Pin|TP_B2_Pin|DISP_POWER_Pin
                           |DISP_NRST_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

   /*Configure GPIO pins : PAPin PAPin */
   GPIO_InitStruct.Pin = USART1_NRE_Pin|DISP_NSS_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

   /*Configure GPIO pin : PtPin */
   GPIO_InitStruct.Pin = DISP_NBUSY_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
   GPIO_InitStruct.Pull = GPIO_PULLUP;
   HAL_GPIO_Init(DISP_NBUSY_GPIO_Port, &GPIO_InitStruct);         
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! tady to nastavi DISP_POWER_Pin  (PB6) na 
1, nechapu, i pri krokovani do Init to zmeni MODER dle ocekavani zmeni 
se jen z xxxxdxxx na xxxx1xxx (prave pri prepisu MODER to skoci na 1)

   /*Configure GPIO pin : PtPin */
   GPIO_InitStruct.Pin = DISP_DC_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
   HAL_GPIO_Init(DISP_DC_GPIO_Port, &GPIO_InitStruct);

}



Další informace o konferenci Hw-list