GadgetSeed  0.9.6
gpio_lcd_8bit.c ファイル

STM32 GPIO LCD (Arduino LCD Shield) [詳解]

#include "sysconfig.h"
#include "device.h"
#include "tprintf.h"
#include "tkprintf.h"
#include "system.h"
#include "device/vio_ioctl.h"
#include "task/syscall.h"
#include "task/mutex.h"
#include "sysevent.h"
#include "timer.h"
#include "stm32f4xx_hal.h"
#include "dkprintf.h"
#include "device/ts_ioctl.h"
gpio_lcd_8bit.c の依存先関係図:

[ソースコード]

マクロ定義

#define lock()   mutex_lock(&gpio_mutex, 0/*1000*/)
 
#define unlock()   mutex_unlock(&gpio_mutex)
 
#define DATA_TO_GPIOA_BSRR(data)
 
#define DATA_TO_GPIOB_BSRR(data)
 
#define DATA_TO_GPIOC_BSRR(data)
 
#define LCD_PIXEL_3BYTES
 
#define SIZEOFSTACK   (1024*1)
 

関数

static void MX_GPIO_Init (void)
 
static void rd_active (void)
 
static void rd_idle (void)
 
static void wr_active (void)
 
static void wr_idle (void)
 
static void cd_command (void)
 
static void cd_data (void)
 
static void set_reset (unsigned long arg)
 
static void set_cs (unsigned long arg)
 
static void dir_out_data (void)
 
static void dir_in_data (void)
 
static unsigned char read_8bits (void)
 
static void write_8bits (unsigned char data)
 
static int gpio_read (struct st_device *dev, void *data, unsigned int size)
 
static int gpio_write (struct st_device *dev, const void *data, unsigned int size)
 
static void write_fore_word (void)
 
static void write_back_word (void)
 
static int gpio_ioctl (struct st_device *dev, unsigned int com, unsigned int arg, void *param)
 
static void MX_ADC1_Init (void)
 
void HAL_ADC_MspInit (ADC_HandleTypeDef *hadc)
 
unsigned long read_pos_x (void)
 
unsigned int read_pos_y (void)
 
static void ts_timer_func (void *sp, unsigned long long systime)
 
static int ts_task (char *arg)
 
static int gpio_register (struct st_device *dev, char *param)
 
static int ts_analog_ioctl (struct st_device *dev, unsigned int com, unsigned int arg, void *param)
 

変数

static unsigned char fore_color_h = 0
 
static unsigned char fore_color_l = 0
 
static unsigned char back_color_h = 0
 
static unsigned char back_color_l = 0
 
static unsigned long f_bsrr_a_h
 
static unsigned long f_bsrr_b_h
 
static unsigned long f_bsrr_c_h
 
static unsigned long f_bsrr_a_l
 
static unsigned long f_bsrr_b_l
 
static unsigned long f_bsrr_c_l
 
static unsigned long b_bsrr_a_h
 
static unsigned long b_bsrr_b_h
 
static unsigned long b_bsrr_c_h
 
static unsigned long b_bsrr_a_l
 
static unsigned long b_bsrr_b_l
 
static unsigned long b_bsrr_c_l
 $gsc タッチセンサデバイスを有効にする
 
static struct st_mutex gpio_mutex
 
ADC_HandleTypeDef hadc1
 
static struct st_tcb tcb
 
static unsigned int stack [SIZEOFSTACK/sizeof(unsigned int)]
 
static int ts_mxl = 16
 
static int ts_xl = 576
 
static int ts_mxr = (GSC_GRAPHICS_DISPLAY_WIDTH-16)
 
static int ts_xr = 3667
 
static int ts_myt = 16
 
static int ts_yt = 659
 
static int ts_myb = (GSC_GRAPHICS_DISPLAY_HEIGHT-16)
 
static int ts_yb = 3446
 
static volatile int flg_touch = 0
 
static int lpos_x
 
static int lpos_y
 
static int ts_low_val [2]
 
const struct st_device lcd_gpio_device
 
const struct st_device ts_analog_device
 

詳解

STM32 GPIO LCD (Arduino LCD Shield)

Registor width 16 : ILI9325 (aitendo UL024TF) Registor width 8 : ILI9341 (Kuman K60)

日付
2017.10.15
著者
Takashi SHUDO

PA0 LCD_RD PA1 LCD_WR PA4 LCD_RS YP(Analog IN) ADC1 IN4 PB0 LCD_CS XM(Analog IN) ADC1 IN8 PC1 LCD_RESET

PA9 LCD_D0 YM(Digital) PC7 LCD_D1 XP(Digital) PA10 LCD_D2 PB3 LCD_D3 PB5 LCD_D4 PB4 LCD_D5 PB10 LCD_D6 PA8 LCD_D7

gpio_lcd_8bit.c に定義があります。

マクロ定義詳解

◆ DATA_TO_GPIOA_BSRR

#define DATA_TO_GPIOA_BSRR (   data)
値:
(\
((((unsigned long)(data & (1<<0))?1:0)<<9) |\
(((unsigned long)(data & (1<<2))?1:0)<<10) |\
(((unsigned long)(data & (1<<7))?1:0)<<8))\
|\
(((((unsigned long)(data & (1<<0))?0:1)<<9) |\
(((unsigned long)(data & (1<<2))?0:1)<<10) |\
(((unsigned long)(data & (1<<7))?0:1)<<8)) << 16)\
)

gpio_lcd_8bit.c73 行目に定義があります。

◆ DATA_TO_GPIOB_BSRR

#define DATA_TO_GPIOB_BSRR (   data)
値:
(\
((((unsigned long)(data & (1<<3))?1:0)<<3) |\
(((unsigned long)(data & (1<<4))?1:0)<<5) |\
(((unsigned long)(data & (1<<5))?1:0)<<4) |\
(((unsigned long)(data & (1<<6))?1:0)<<10))\
|\
(((((unsigned long)(data & (1<<3))?0:1)<<3) |\
(((unsigned long)(data & (1<<4))?0:1)<<5) |\
(((unsigned long)(data & (1<<5))?0:1)<<4) |\
(((unsigned long)(data & (1<<6))?0:1)<<10)) << 16)\
)

gpio_lcd_8bit.c83 行目に定義があります。

◆ DATA_TO_GPIOC_BSRR

#define DATA_TO_GPIOC_BSRR (   data)
値:
(\
(((unsigned long)(data & (1<<1))?1:0)<<7)\
|\
((((unsigned long)(data & (1<<1))?0:1)<<7) << 16)\
)

gpio_lcd_8bit.c95 行目に定義があります。

関数詳解

◆ ts_task()

static int ts_task ( char *  arg)
static

!! MUTEXに問題ありそう(2重Lock/Unlockを検出する場合有り)

gpio_lcd_8bit.c985 行目に定義があります。

変数詳解

◆ lcd_gpio_device

const struct st_device lcd_gpio_device
初期値:
= {
.explan = "STM32F4 LCD GPIO",
.register_dev = gpio_register,
.read = gpio_read,
.write = gpio_write,
.ioctl = gpio_ioctl,
}
#define DEF_DEV_NAME_VIDEOIO
標準ビデオIOデバイスドライバ名
Definition: vio_ioctl.h:15

gpio_lcd_8bit.c1079 行目に定義があります。

◆ ts_analog_device

const struct st_device ts_analog_device
初期値:
= {
.name = DEF_DEV_NAME_TS,
.explan = "STM32F4 LCD Touch Sensor",
.ioctl = ts_analog_ioctl,
}
#define DEF_DEV_NAME_TS
標準タッチセンサデバイス名
Definition: ts_ioctl.h:15

gpio_lcd_8bit.c1131 行目に定義があります。