/** * @brief Writes a word in the specific LCD RAM. * @param LCD_RAMRegister: specifies the LCD Contrast. * This parameter can be one of the following values: * @arg LCD_RAMRegister_0: LCD RAM Register 0 * @arg LCD_RAMRegister_1: LCD RAM Register 1 * @arg LCD_RAMRegister_2: LCD RAM Register 2 * @arg LCD_RAMRegister_3: LCD RAM Register 3 * @arg LCD_RAMRegister_4: LCD RAM Register 4 * @arg LCD_RAMRegister_5: LCD RAM Register 5 * @arg LCD_RAMRegister_6: LCD RAM Register 6 * @arg LCD_RAMRegister_7: LCD RAM Register 7 * @arg LCD_RAMRegister_8: LCD RAM Register 8 * @arg LCD_RAMRegister_9: LCD RAM Register 9 * @arg LCD_RAMRegister_10: LCD RAM Register 10 * @arg LCD_RAMRegister_11: LCD RAM Register 11 * @arg LCD_RAMRegister_12: LCD RAM Register 12 * @arg LCD_RAMRegister_13: LCD RAM Register 13 * @arg LCD_RAMRegister_14: LCD RAM Register 14 * @arg LCD_RAMRegister_15: LCD RAM Register 15 * @param LCD_Data: specifies LCD Data Value to be written. * @retval None */ void LCD_Write(uint32_t LCD_RAMRegister, uint32_t LCD_Data) { /* Check the parameters */ assert_param(IS_LCD_RAM_REGISTER(LCD_RAMRegister)); /* Copy data bytes to RAM register */ LCD->RAM[LCD_RAMRegister] = (uint32_t)LCD_Data; }
/** * @brief Writes a byte in the specific LCD RAM . * @param LCD_RAMRegister: The LCD register index in the RAM matrix. * This parameter can be any of the @ref LCD_RAMRegister_TypeDef enumeration. * @param LCD_Data : Value to be written * @retval None */ void LCD_WriteRAM(LCD_RAMRegister_TypeDef LCD_RAMRegister, uint8_t LCD_Data) { /* Check function parameters */ assert_param(IS_LCD_RAM_REGISTER(LCD_RAMRegister)); /* Copy data bytes to RAM register */ LCD->RAM[LCD_RAMRegister] = (uint8_t)LCD_Data; }
/** * @brief Writes a word in the specific LCD RAM. * @param hlcd: LCD handle * @param RAMRegisterIndex: specifies the LCD RAM Register. * This parameter can be one of the following values: * @arg LCD_RAM_REGISTER0: LCD RAM Register 0 * @arg LCD_RAM_REGISTER1: LCD RAM Register 1 * @arg LCD_RAM_REGISTER2: LCD RAM Register 2 * @arg LCD_RAM_REGISTER3: LCD RAM Register 3 * @arg LCD_RAM_REGISTER4: LCD RAM Register 4 * @arg LCD_RAM_REGISTER5: LCD RAM Register 5 * @arg LCD_RAM_REGISTER6: LCD RAM Register 6 * @arg LCD_RAM_REGISTER7: LCD RAM Register 7 * @arg LCD_RAM_REGISTER8: LCD RAM Register 8 * @arg LCD_RAM_REGISTER9: LCD RAM Register 9 * @arg LCD_RAM_REGISTER10: LCD RAM Register 10 * @arg LCD_RAM_REGISTER11: LCD RAM Register 11 * @arg LCD_RAM_REGISTER12: LCD RAM Register 12 * @arg LCD_RAM_REGISTER13: LCD RAM Register 13 * @arg LCD_RAM_REGISTER14: LCD RAM Register 14 * @arg LCD_RAM_REGISTER15: LCD RAM Register 15 * @param RAMRegisterMask: specifies the LCD RAM Register Data Mask. * @param Data: specifies LCD Data Value to be written. * @retval None */ HAL_StatusTypeDef HAL_LCD_Write(LCD_HandleTypeDef *hlcd, uint32_t RAMRegisterIndex, uint32_t RAMRegisterMask, uint32_t Data) { uint32_t tickstart = 0x00; if((hlcd->State == HAL_LCD_STATE_READY) || (hlcd->State == HAL_LCD_STATE_BUSY)) { /* Check the parameters */ assert_param(IS_LCD_RAM_REGISTER(RAMRegisterIndex)); if(hlcd->State == HAL_LCD_STATE_READY) { /* Process Locked */ __HAL_LOCK(hlcd); hlcd->State = HAL_LCD_STATE_BUSY; /* Get timeout */ tickstart = HAL_GetTick(); /*!< Wait Until the LCD is ready */ while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_UDR) != RESET) { if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE) { hlcd->ErrorCode = HAL_LCD_ERROR_UDR; /* Process Unlocked */ __HAL_UNLOCK(hlcd); return HAL_TIMEOUT; } } } /* Copy the new Data bytes to LCD RAM register */ MODIFY_REG(hlcd->Instance->RAM[RAMRegisterIndex], ~(RAMRegisterMask), Data); return HAL_OK; } else { return HAL_ERROR; } }