summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/lcd.c
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal/lcd.c')
-rw-r--r--stmhal/lcd.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/stmhal/lcd.c b/stmhal/lcd.c
index d2db7b7ba1..c5952fa48c 100644
--- a/stmhal/lcd.c
+++ b/stmhal/lcd.c
@@ -1,3 +1,4 @@
+#include <stdio.h>
#include <string.h>
#include <stm32f4xx_hal.h>
@@ -59,8 +60,12 @@
#define LCD_INSTR (0)
#define LCD_DATA (1)
+static void lcd_delay(void) {
+ __asm volatile ("nop\nnop");
+}
+
static void lcd_out(int instr_data, uint8_t i) {
- HAL_Delay(0);
+ lcd_delay();
PYB_LCD_PORT->BSRRH = PYB_LCD_CS1_PIN; // CS=0; enable
if (instr_data == LCD_INSTR) {
PYB_LCD_PORT->BSRRH = PYB_LCD_A0_PIN; // A0=0; select instr reg
@@ -69,7 +74,7 @@ static void lcd_out(int instr_data, uint8_t i) {
}
// send byte bigendian, latches on rising clock
for (uint32_t n = 0; n < 8; n++) {
- HAL_Delay(0);
+ lcd_delay();
PYB_LCD_PORT->BSRRH = PYB_LCD_SCL_PIN; // SCL=0
if ((i & 0x80) == 0) {
PYB_LCD_PORT->BSRRH = PYB_LCD_SI_PIN; // SI=0
@@ -77,7 +82,7 @@ static void lcd_out(int instr_data, uint8_t i) {
PYB_LCD_PORT->BSRRL = PYB_LCD_SI_PIN; // SI=1
}
i <<= 1;
- HAL_Delay(0);
+ lcd_delay();
PYB_LCD_PORT->BSRRL = PYB_LCD_SCL_PIN; // SCL=1
}
PYB_LCD_PORT->BSRRL = PYB_LCD_CS1_PIN; // CS=1; disable