HAL library 12- LCD for STM32Fxxx

LCD is first big library provided from me. It’s the same as SDRAM, it works on STM32F429-Discovery, STM32F439-EVAL and STM32F7-Discovery boards. With one library you can control 3 boards just by selecting proper define in your target.

Library can be extended to other boards. Library requires FMC peripheral for SDRAM for display memory, DMA2D for fastest graphic accelerations and LTDC for transferring layers to LCD.

Dependencies

Board pinouts

LCD pins are different for different board. Using proper defines (explained below) you can select which board is used.

For full pinout list, download and open LCD library and check header file with description.

Board selection

The most important thing is to tell library, which board is used in target system. There are 2 possible ways to do that. One (and I prefer it) is to check my DISCO library and follow instructions which define you have to set for proper board, and another, explained below.

If you choose option one, then you will have no worries in my future libraries where library needs to know exactly which board is used!

The second option (I don’t prefer it) is, to set define only for this library. Copy define corresponding to your board into defines.h file or make a global defines in compiler’s settings. I made global defines in Keil uVision under “Options for Target” -> “C/C++” tab.

Defines for SDRAM library

C

1

2

3

4

5

6

7

8

//Use LCD on STM32F439-EVAL board

#define LCD_USE_STM32F439_EVAL

//Use LCD on STM32F7-Discovery board

#define LCD_USE_STM32F7_DISCOVERY

//Use LCD on STM32F429-Discovery board

#define LCD_USE_STM32F429_DISCOVERY

Functions and enumerations

LCD functions and enumerations

C

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

/**

* @brief LCD result enumeration

*/

typedefenum_TM_LCD_Result_t{

TM_LCD_Result_Ok=0x00,/*!< Everything OK */

TM_LCD_Result_Error,/*!< An error occurred */

TM_LCD_Result_SDRAM_Error/*!< SDRAM initialization has failed */

}TM_LCD_Result_t;

/**

* @}

*/

/**

* @defgroup TM_LCD_Functions

* @brief Library Functions

* @{

*/

/**

* @brief Initializes LCD

* @note This function must be called at the beginning of LCD operations