From 932d2b1a7b5fe57870babb49c73bf9cfec18f6ae Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Sat, 16 Dec 2023 23:02:36 +0800 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/launch.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index d4d5714..a467a37 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,13 +5,13 @@ "cwd": "${workspaceRoot}", "type": "cortex-debug", "request": "launch", - "name": "jlink", - "servertype": "jlink", - "interface": "swd", + "name": "openocd", + "servertype": "openocd", "executable": "build\\Debug\\violet_firmware_zf.elf", "runToEntryPoint": "main", - "device": "null", - "toolchainPrefix": "riscv-none-embed" + "configFiles": [ + "${workspaceFolder}/tools/wch-riscv.cfg" + ] } ] } \ No newline at end of file From 0d972aadd478389d4517807aab5b63142f6a1cc9 Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Tue, 19 Dec 2023 16:55:05 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E5=88=9D=E6=AD=A5=E7=A7=BB?= =?UTF-8?q?=E6=A4=8D=E8=8F=9C=E5=8D=95=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/main.c | 4 +- app/page/cw_page.c | 120 ++++++++++++++++++++++++++++++++++ app/page/cw_page.h | 64 ++++++++++++++++++ app/page/cw_page_menu.c | 106 ++++++++++++++++++++++++++++++ app/page/cw_page_ui_widget.c | 123 +++++++++++++++++++++++++++++++++++ app/page/cw_page_ui_widget.h | 16 +++++ 6 files changed, 431 insertions(+), 2 deletions(-) create mode 100644 app/page/cw_page.c create mode 100644 app/page/cw_page.h create mode 100644 app/page/cw_page_menu.c create mode 100644 app/page/cw_page_ui_widget.c create mode 100644 app/page/cw_page_ui_widget.h diff --git a/app/main.c b/app/main.c index b9753ae..40506f8 100644 --- a/app/main.c +++ b/app/main.c @@ -30,7 +30,7 @@ * * 修改记录 * 日期 作者 备注 - * 2022-09-15 大W first version + * 2022-09-15 大 W first version ********************************************************************************************************************/ #include "zf_common_headfile.h" #include "cw_servo.h" @@ -43,7 +43,7 @@ uint16_t pwm_cnt = 0; int main(void) { clock_init(SYSTEM_CLOCK_120M); // 初始化芯片时钟 工作频率为 120MHz - debug_init(); // 务必保留,本函数用于初始化MPU 时钟 调试串口 + debug_init(); // 务必保留,本函数用于初始化 MPU 时钟 调试串口 ips114_init(); by_gpio_init(); diff --git a/app/page/cw_page.c b/app/page/cw_page.c new file mode 100644 index 0000000..34cb8e0 --- /dev/null +++ b/app/page/cw_page.c @@ -0,0 +1,120 @@ +#include "cw_page.h" + +PAGE_LIST pagelist[page_max]; +static uint8 page_busy = 0; +static int8 now_page = page_menu; +static int8 new_page = page_menu; + +/** + * @brief 娉ㄥ唽涓涓熀鏈〉闈紝鍖呭惈涓涓垵濮嬪寲鍑芥暟锛屽惊鐜嚱鏁帮紝閫鍑哄嚱鏁帮紝浜嬩欢鍑芥暟 + * @param pageID: 椤甸潰缂栧彿 + * @param pageText: 椤甸潰鏍囬鐨勬寚閽 + * @param setupCallback: 鍒濆鍖栧嚱鏁板洖璋 + * @param loopCallback: 寰幆鍑芥暟鍥炶皟 + * @param exitCallback: 閫鍑哄嚱鏁板洖璋 + * @param eventCallback: 浜嬩欢鍑芥暟鍥炶皟 + * @retval 鏃 + */ +void Page_Register(uint8 pageID, char *pageText, + CallbackFunction_t setupCallback, CallbackFunction_t loopCallback, + CallbackFunction_t exitCallback, EventFunction_t eventCallback) { + pagelist[pageID].Text = pageText; + pagelist[pageID].SetupCallback = setupCallback; + pagelist[pageID].LoopCallback = loopCallback; + pagelist[pageID].ExitCallback = exitCallback; + pagelist[pageID].EventCallback = eventCallback; +} + +/** + * @brief 椤甸潰浜嬩欢浼犻 + * @param event: 浜嬩欢缂栧彿 + * @retval 鏃 + */ +void Page_EventTransmit(unsigned char event) { + /*灏嗕簨浠朵紶閫掑埌褰撳墠椤甸潰*/ + if (pagelist[now_page].EventCallback != 0) + pagelist[now_page].EventCallback(event); +} + +/** + * @brief 椤甸潰鍒囨崲 + * @param pageID锛氶〉闈㈠彿 + * @retval 1锛氭垚鍔 0锛氬け璐 + */ +void Page_Shift(unsigned char pageID) { + if (page_busy == 0) { + new_page = pageID; + } +} + +/** + * @brief 鍏抽棴褰撳墠椤甸潰 + * + */ +void Page_CloseCurrentPage() { + pagelist[now_page].ExitCallback(); +} + +/** + * @brief 鎵撳紑褰撳墠椤甸潰 + * + */ +void Page_OpenCurrentPage() { + pagelist[now_page].SetupCallback(); +} + +/** + * @brief 鑾峰彇椤甸潰鐘舵 + * + * @return uint8 椤甸潰蹇欒繑鍥1 绌洪棽杩斿洖0 + */ +uint8 Page_GetStatus(void) { + if (page_busy) + return 1; + else + return 0; +} + +/** + * @brief 椤甸潰杩愯鍑芥暟 + * + */ +void Page_Run(void) { + + if (now_page != new_page) { + if (new_page >= page_max && new_page < page_menu) { + new_page = page_menu; + } + + //鎵ц褰撳墠椤甸潰閫鍑哄洖璋冨嚱鏁 + if ((pagelist[now_page].ExitCallback != 0)) { + pagelist[now_page].ExitCallback(); + } + //鎵ц鏂伴〉闈㈡瀯閫犲洖璋冨嚱鏁 + if (pagelist[new_page].SetupCallback != 0) { + pagelist[new_page].SetupCallback(); + } + + now_page = new_page; + } + + if (page_busy == 0) { + //鎵ц寰幆鍑芥暟 + pagelist[now_page].LoopCallback(); + } +} + +/** + * @brief 椤甸潰鍒濆鍖栵紙娉ㄥ唽锛屾瀯寤猴級 //ATTENTION 鍦ㄦ澶勬坊鍔犳柊鍔犲叆鐨勯〉闈 + * + */ +void Page_Init(void) { + PAGE_REG(page_menu); + // PAGE_REG(page_argv); + // PAGE_REG(page_sys); + // PAGE_REG(page_run); + + Page_Shift(page_menu); + + pagelist[now_page].SetupCallback(); //鍏堟瀯寤轰竴閬 +} diff --git a/app/page/cw_page.h b/app/page/cw_page.h new file mode 100644 index 0000000..39159b1 --- /dev/null +++ b/app/page/cw_page.h @@ -0,0 +1,64 @@ +/* + * @Author: CaoWangrenbo cao.wangrenbo@yandex.com + * @Date: 2023-03-19 18:28:44 + * @LastEditors: CaoWangrenbo cao.wangrenbo@yandex.com + * @LastEditTime: 2023-03-19 20:43:00 + * @FilePath: \icr18_btl143_ch32v_slave\project\code\page\fd_page.h + * @Description: + * + * + */ +#ifndef _FD_PAGE_H__ +#define _FD_PAGE_H__ + +#include "zf_common_headfile.h" + +enum PageID { + PAGE_NULL = -1, + //...... + page_menu, + // page_argv, + // page_sys, + // page_run, + //...... + page_max, +}; + +typedef enum page_event{ + page_event_forward, + page_event_backward, + page_event_press +} page_event; + +typedef void (*CallbackFunction_t)(void); +typedef void (*EventFunction_t)(page_event); +typedef struct { + char *Text; + CallbackFunction_t SetupCallback; + CallbackFunction_t LoopCallback; + CallbackFunction_t ExitCallback; + EventFunction_t EventCallback; +} PAGE_LIST; + +//椤甸潰娉ㄥ唽鍑芥暟 +#define PAGE_REG(name)\ +do{\ + extern void PageRegister_##name(unsigned char pageID);\ + PageRegister_##name(name);\ +}while(0) + +void Page_Register(uint8 pageID, char *pageText, + CallbackFunction_t setupCallback, CallbackFunction_t loopCallback, + CallbackFunction_t exitCallback, EventFunction_t eventCallback); + +void Page_EventTransmit(unsigned char event); +void Page_Shift(unsigned char pageID); +void Page_CloseCurrentPage(void); +void Page_OpenCurrentPage(void); +uint8 Page_GetStatus(void); +void Page_Run(void); +void Page_Init(void); + +extern PAGE_LIST pagelist[page_max]; + +#endif diff --git a/app/page/cw_page_menu.c b/app/page/cw_page_menu.c new file mode 100644 index 0000000..bc12d4d --- /dev/null +++ b/app/page/cw_page_menu.c @@ -0,0 +1,106 @@ +#include "zf_common_headfile.h" +#include "cw_page_ui_widget.h" +#include "cw_page.h" + +#define LINE_HEAD 1 +#define LINE_END 7 + +static char Text[] = "Menu"; + +static int8_t Curser = 1; // 瀹氫箟鍏夋爣浣嶇疆 +static int8_t Curser_Last = 1; // 瀹氫箟鍏夋爣浣嶇疆 +static void Print_Menu_p(void); +/*************************************************************************************** + * + * 浠ヤ笅涓洪〉闈㈡ā鏉垮嚱鏁 + * + ***************************************************************************************/ + +/** + * @brief 椤甸潰鍒濆鍖栦簨浠 + * @param 鏃 + * @retval 鏃 + */ +static void Setup() +{ + ips114_clear(); + Print_Menu_p(); + Print_Curser(Curser, Curser_Last); +} + +/** + * @brief 椤甸潰閫鍑轰簨浠 + * @param 鏃 + * @retval 鏃 + */ +static void Exit() +{ +} + +/** + * @brief 椤甸潰寰幆鎵ц鐨勫唴瀹 + * @param 鏃 + * @retval 鏃 + */ +static void Loop() +{ +} + +/** + * @brief 椤甸潰浜嬩欢 + * @param btn:鍙戝嚭浜嬩欢鐨勬寜閿 + * @param event:浜嬩欢缂栧彿 + * @retval 鏃 + */ +static void Event(page_event event) +{ + Curser_Last = Curser; + + if (page_event_forward == event) { + Curser--; // 鍏夋爣涓婄Щ + } else if (page_event_backward == event) { + Curser++; // 鍏夋爣涓嬬Щ + } else if (page_event_press == event) { + if (page_max > Curser && page_menu < Curser) { + Page_Shift(Curser); // 鍒囨崲鍒板厜鏍囬変腑鐨勯〉闈 + } + } + + if (Curser < LINE_HEAD) { + Curser = LINE_END; + } else if (Curser > LINE_END) { + Curser = LINE_HEAD; + } + + Print_Curser(Curser, Curser_Last); +} + +/** + * @brief 椤甸潰娉ㄥ唽鍑芥暟 + * + * @param pageID + */ +void PageRegister_page_menu(unsigned char pageID) +{ + Page_Register(pageID, Text, Setup, Loop, Exit, Event); +} + +/*************************************************************************************** + * + * 浠ヤ笅涓洪〉闈㈣嚜瀹氫箟鍔熻兘鍑芥暟 + * + ***************************************************************************************/ + +/** + * @brief 鎵撳嵃鑿滃崟椤 + * + */ +static void Print_Menu_p(void) +{ + // SCREEN_showstr_style(5 * 8, 0, RED, WHITE, "#### MAIN MENU ####"); + ips114_show_string(0, 0, Text); + for (uint8 i = page_menu + 1; i < page_max; i++) { + ips114_show_string(8, i, pagelist[i].Text); + // SCREEN_showstr(8, i, pagelist[i].Text); + } +} diff --git a/app/page/cw_page_ui_widget.c b/app/page/cw_page_ui_widget.c new file mode 100644 index 0000000..69db196 --- /dev/null +++ b/app/page/cw_page_ui_widget.c @@ -0,0 +1,123 @@ +#include "cw_page_ui_widget.h" + +/** + * @brief 缁樺埗鍏夋爣 + * + * @param Curser_In 褰撳墠鍏夋爣浣嶇疆 + * @param Curser_Last_In 涓婁竴鏃跺埢鍏夋爣浣嶇疆 + */ +void Print_Curser(uint8 Curser_In, uint8 Curser_Last_In) { + ips114_show_string(0, Curser_Last_In, " "); + ips114_show_string(0, Curser_In, ">"); +} + +/** + * @brief 鎵撳嵃鑿滃崟椤 + * + */ +void Print_Menu(const ITEM *item, uint8 item_sum) { + ips114_show_string(0, 0, " --return--"); + for (uint8 i = 0; i < item_sum; i++) { + ips114_show_string(8, i + 1, item[i].text); + } +} + +/** + * @brief 鎵撳嵃鏁板奸」 + * + */ +void Print_Value(const ITEM *item, uint8 item_sum) { +// for (uint8 i = 0; i < item_sum; i++) { +// switch (Param_Data[item[i].data_tag].type) { +// case EINT8: +// ips114_show_int(128, i + 1, +// *((int8 *)Param_Data[item[i].data_tag].p_data), 5); +// break; +// case EINT16: +// ips114_show_int(128, i + 1, +// *((int16 *)Param_Data[item[i].data_tag].p_data), 5); +// break; +// case EINT32: +// ips114_show_int(128, i + 1, +// *((int32 *)Param_Data[item[i].data_tag].p_data), 5); +// break; +// case EUINT8: +// ips114_show_int(128, i + 1, +// *((uint8 *)Param_Data[item[i].data_tag].p_data), 5); +// break; +// case EUINT16: +// ips114_show_int(128, i + 1, +// *((uint16 *)Param_Data[item[i].data_tag].p_data), 5); +// break; +// case EUINT32: +// ips114_show_int(128, i + 1, +// *((uint32 *)Param_Data[item[i].data_tag].p_data), 5); +// case EFLOAT: +// ips114_show_float(128, i + 1, +// *((float *)Param_Data[item[i].data_tag].p_data), 5, 2); +// break; +// default: +// break; +// } +// } +} + +/** + * @brief + * + * @param item_num + * @param dir + */ +void Set_Vaule(ITEM *item, uint8 item_num, float step) { + + // if (EFLOAT == Param_Data[item[item_num].data_tag].type) { // 寰呬慨鏀瑰彉閲忎负娴偣 + // *((float *)Param_Data[item[item_num].data_tag].p_data) += step; + // ips114_show_float(128, item_num + 1, + // *((float *)Param_Data[item[item_num].data_tag].p_data), 6, + // 2); + // return; + // } + + // if (0 < step && + // 1 > step) { // 閬垮厤姝ヨ繘鍊煎皬浜 1 鏃舵埅灏句负 0锛屼笉鐭ラ亾涓哄暐 ceil 鍑芥暟涓嶅彲鐢 + // step = 1; + // } else if (0 > step && -1 < step) { + // step = -1; + // } + + // switch (Param_Data[item[item_num].data_tag].type) { + // case EINT8: + // *((int8 *)Param_Data[item[item_num].data_tag].p_data) += (int8)step; + // ips114_show_int(128, item_num + 1, + // *((int8 *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EINT16: + // *((int16 *)Param_Data[item[item_num].data_tag].p_data) += (int16)step; + // ips114_show_int(128, item_num + 1, + // *((int16 *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EINT32: + // *((int32 *)Param_Data[item[item_num].data_tag].p_data) += (int32)step; + // ips114_show_int(128, item_num + 1, + // *((int32 *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EUINT8: + // *((uint8 *)Param_Data[item[item_num].data_tag].p_data) += (uint8)step; + // ips114_show_int(128, item_num + 1, + // *((uint8 *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EUINT16: + // *((uint16 *)Param_Data[item[item_num].data_tag].p_data) += (uint16)step; + // ips114_show_int(128, item_num + 1, + // *((uint16 *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EUINT32: + // *((uint32 *)Param_Data[item[item_num].data_tag].p_data) += (uint32)step; + // ips114_show_int(128, item_num + 1, + // *((uint32 *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // default: + // break; + // } +} + diff --git a/app/page/cw_page_ui_widget.h b/app/page/cw_page_ui_widget.h new file mode 100644 index 0000000..84634dc --- /dev/null +++ b/app/page/cw_page_ui_widget.h @@ -0,0 +1,16 @@ +#ifndef _FD_SCREEN_WIDGET_H__ +#define _FD_SCREEN_WIDGET_H__ + +#include "zf_common_headfile.h" + +typedef struct { + char *text; //鍙橀噺鏄剧ず鍚 + uint8 data_tag; //鍙橀噺缁撴瀯浣 +} ITEM; + +void Print_Curser(uint8 Curser_In, uint8 Curser_Last_In); +void Print_Menu(const ITEM* item, uint8 item_sum); +void Print_Value(const ITEM* item, uint8 item_sum); +void Set_Vaule(ITEM* item, uint8 item_num, float step); + +#endif From 3ea8776a2b44f439d85ef067a8b3d7a2f6b87c40 Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Thu, 21 Dec 2023 22:33:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=BE=B9?= =?UTF-8?q?=E7=BA=BF=E6=98=BE=E7=A4=BA=E6=8E=A7=E4=BB=B6(=E6=9C=AA?= =?UTF-8?q?=E6=B5=8B=E8=AF=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/gl_common.c | 2 +- app/gl_common.h | 5 +- app/gl_handle_img.c | 24 +- app/gl_handle_img.h | 12 +- app/gl_img_process.c | 3 - app/gl_img_process.h | 6 +- app/main.c | 80 +-- app/main.h | 32 +- app/page/cw_page.c | 12 +- app/page/cw_page.h | 4 +- app/page/cw_page_menu.c | 7 +- app/page/cw_page_rtcam.c | 106 ++++ app/page/cw_page_ui_widget.c | 207 ++++--- app/page/cw_page_ui_widget.h | 11 +- libraries/zf_device/zf_device_ips200.c | 820 +++++++++++-------------- libraries/zf_device/zf_device_ips200.h | 29 +- 16 files changed, 691 insertions(+), 669 deletions(-) create mode 100644 app/page/cw_page_rtcam.c diff --git a/app/gl_common.c b/app/gl_common.c index 29a3138..e35e349 100644 --- a/app/gl_common.c +++ b/app/gl_common.c @@ -2,7 +2,7 @@ #include "gl_headfile.h" -sint32 limit(sint32 x, sint32 low, sint32 up) +int32_t limit(int32_t x, int32_t low, int32_t up) { return x > up ? up : x < low ? low : x; } diff --git a/app/gl_common.h b/app/gl_common.h index 1bd003a..1cfda26 100644 --- a/app/gl_common.h +++ b/app/gl_common.h @@ -23,10 +23,7 @@ #define FRAMETOLEFT (5) #define FRAMETORIGHT (5) -typedef signed int sint32; -typedef float float32; - -sint32 limit(sint32 x, sint32 low, sint32 up); +int32_t limit(int32_t x, int32_t low, int32_t up); int clip(int x, int low, int up); float fclip(float x, float low, float up) ; diff --git a/app/gl_handle_img.c b/app/gl_handle_img.c index 1e12c62..5e0c293 100644 --- a/app/gl_handle_img.c +++ b/app/gl_handle_img.c @@ -5,12 +5,12 @@ -const sint32 direction_front[4][2] = {{0, -1},{1, 0},{0, 1},{-1, 0}}; -const sint32 direction_frontleft[4][2] = {{-1, -1},{1, -1},{1, 1},{-1, 1}}; -const sint32 direction_frontright[4][2] ={{1, -1},{1, 1},{-1, 1},{-1, -1}}; +const int32_t direction_front[4][2] = {{0, -1},{1, 0},{0, 1},{-1, 0}}; +const int32_t direction_frontleft[4][2] = {{-1, -1},{1, -1},{1, 1},{-1, 1}}; +const int32_t direction_frontright[4][2] ={{1, -1},{1, 1},{-1, 1},{-1, -1}}; -void SearchLineAdaptive_Left(uint8 img_gray[], sint32 block_size, sint32 down_value, sint32 h, sint32 w, sint32 pts[][2], sint32* line_num) +void SearchLineAdaptive_Left(uint8_t img_gray[], int32_t block_size, int32_t down_value, int32_t h, int32_t w, int32_t pts[][2], int32_t* line_num) { int half = block_size / 2; int step = 0, dir = 0, turn = 0; @@ -53,7 +53,7 @@ void SearchLineAdaptive_Left(uint8 img_gray[], sint32 block_size, sint32 down_va *line_num = step; } -void SearchLineAdaptive_Right(uint8 img_gray[], sint32 block_size, sint32 down_value, sint32 h, sint32 w, sint32 pts[][2], sint32* line_num) +void SearchLineAdaptive_Right(uint8_t img_gray[], int32_t block_size, int32_t down_value, int32_t h, int32_t w, int32_t pts[][2], int32_t* line_num) { int half = block_size / 2; int step = 0, dir = 0, turn = 0; @@ -100,7 +100,7 @@ void SearchLineAdaptive_Right(uint8 img_gray[], sint32 block_size, sint32 down_v -void GetLinesFilter(float32 pts_in[][2], sint32 pts_in_count, float32 pts_out[][2], sint32 kernelsize) +void GetLinesFilter(float pts_in[][2], int32_t pts_in_count, float pts_out[][2], int32_t kernelsize) { int half = kernelsize / 2; for (int i = 0; i < pts_in_count; i++) { @@ -115,7 +115,7 @@ void GetLinesFilter(float32 pts_in[][2], sint32 pts_in_count, float32 pts_out[][ } } -void GetLinesResample(float32 pts_in[][2], sint32 num1, float32 pts_out[][2], sint32* num2, float32 dist) +void GetLinesResample(float pts_in[][2], int32_t num1, float pts_out[][2], int32_t* num2, float dist) { if (num1 < 0) { *num2 = 0; @@ -192,7 +192,7 @@ void nms_angle(float angle_in[], int num, float angle_out[], int kernel) { } } -void GetMidLine_Left(float32 pts_left[][2], sint32 pts_left_count, float32 mid_left[][2], sint32 approx_num, float32 dist) +void GetMidLine_Left(float pts_left[][2], int32_t pts_left_count, float mid_left[][2], int32_t approx_num, float dist) { for (int i = 0; i < pts_left_count; i++) { float dx = pts_left[clip(i + approx_num, 0, pts_left_count - 1)][1] - pts_left[clip(i - approx_num, 0, pts_left_count - 1)][1]; @@ -207,7 +207,7 @@ void GetMidLine_Left(float32 pts_left[][2], sint32 pts_left_count, float32 mid_l } -void GetMidLine_Right(float32 pts_right[][2], sint32 pts_right_count, float32 mid_right[][2], sint32 approx_num, float32 dist) +void GetMidLine_Right(float pts_right[][2], int32_t pts_right_count, float mid_right[][2], int32_t approx_num, float dist) { for (int i = 0; i < pts_right_count; i++) { float dx = pts_right[clip(i + approx_num, 0, pts_right_count -1)][1] - pts_right[clip(i - approx_num, 0, pts_right_count -1 )][1]; @@ -223,10 +223,10 @@ void GetMidLine_Right(float32 pts_right[][2], sint32 pts_right_count, float32 mi } -int is_curve(float32 angle[], int n, float32 threshold) { +int is_curve(float angle[], int n, float threshold) { for (int i = 1; i < n - 1; i++) { - float32 da = fabs(angle[i] - angle[i-1]); - float32 db = fabs(angle[i+1] - angle[i]); + float da = fabs(angle[i] - angle[i-1]); + float db = fabs(angle[i+1] - angle[i]); if (da > threshold && db > threshold) { return 1; // 鏄集閬 } diff --git a/app/gl_handle_img.h b/app/gl_handle_img.h index 05f9470..2707caa 100644 --- a/app/gl_handle_img.h +++ b/app/gl_handle_img.h @@ -3,13 +3,13 @@ -void SearchStartPoint_Left(uint8 img_gray[], sint32* h_start, sint32* w_start, uint8 threshold); -void GetLinesFilter(float32 pts_in[][2], sint32 pts_in_count, float32 pts_out[][2], sint32 kernelsize); -void GetLinesResample(float32 pts_in[][2], sint32 num1, float32 pts_out[][2], sint32* num2, float32 dist); +void SearchStartPoint_Left(uint8_t img_gray[], int32_t* h_start, int32_t* w_start, uint8_t threshold); +void GetLinesFilter(float pts_in[][2], int32_t pts_in_count, float pts_out[][2], int32_t kernelsize); +void GetLinesResample(float pts_in[][2], int32_t num1, float pts_out[][2], int32_t* num2, float dist); void local_angle_points(float pts_in[][2], int num, float angle_out[], int dist); void nms_angle(float angle_in[], int num, float angle_out[], int kernel); -void GetMidLine_Left(float32 pts_left[][2], sint32 pts_left_count, float32 mid_left[][2], sint32 approx_num, float32 dist); -void GetMidLine_Right(float32 pts_right[][2], sint32 pts_right_count, float32 mid_right[][2], sint32 approx_num, float32 dist); -int is_curve(float32 angle[], int n, float32 threshold) ; +void GetMidLine_Left(float pts_left[][2], int32_t pts_left_count, float mid_left[][2], int32_t approx_num, float dist); +void GetMidLine_Right(float pts_right[][2], int32_t pts_right_count, float mid_right[][2], int32_t approx_num, float dist); +int is_curve(float angle[], int n, float threshold) ; #endif /* COMMON_H_ */ \ No newline at end of file diff --git a/app/gl_img_process.c b/app/gl_img_process.c index c0bcbad..9705fa0 100644 --- a/app/gl_img_process.c +++ b/app/gl_img_process.c @@ -5,9 +5,6 @@ /* @author: glz @brief: - - - */ diff --git a/app/gl_img_process.h b/app/gl_img_process.h index 968f2e5..e745ce1 100644 --- a/app/gl_img_process.h +++ b/app/gl_img_process.h @@ -3,10 +3,8 @@ #include "zf_common_headfile.h" -typedef signed int sint32; - void img_processing(void); -void SearchLineAdaptive_Left(uint8 img_gray[], sint32 block_size, sint32 down_value, sint32 h, sint32 w, sint32 pts[][2], sint32* line_num); -void SearchLineAdaptive_Right(uint8 img_gray[], sint32 block_size, sint32 down_value, sint32 h, sint32 w, sint32 pts[][2], sint32* line_num); +void SearchLineAdaptive_Left(uint8_t img_gray[], int32_t block_size, int32_t down_value, int32_t h, int32_t w, int32_t pts[][2], int32_t* line_num); +void SearchLineAdaptive_Right(uint8_t img_gray[], int32_t block_size, int32_t down_value, int32_t h, int32_t w, int32_t pts[][2], int32_t* line_num); #endif /* STATE_H_ */ diff --git a/app/main.c b/app/main.c index a15630e..18d6832 100644 --- a/app/main.c +++ b/app/main.c @@ -2,11 +2,11 @@ * CH32V307VCT6 Opensourec Library 即(CH32V307VCT6 开源库)是一个基于官方 SDK 接口的第三方开源库 * Copyright (c) 2022 SEEKFREE 逐飞科技 * - * 本文件是CH32V307VCT6 开源库的一部分 + * 本文件是 CH32V307VCT6 开源库的一部分 * * CH32V307VCT6 开源库 是免费软件 - * 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款 - * 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它 + * 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU 通用公共许可证)的条款 + * 即 GPL 的第 3 版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它 * * 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证 * 甚至没有隐含的适销性或适合特定用途的保证 @@ -34,25 +34,25 @@ ********************************************************************************************************************/ #include "zf_common_headfile.h" #include "gl_headfile.h" -#include "cw_servo.h" #include "by_pt_button.h" #include "by_fan_control.h" +#include "cw_servo.h" +#include "./page/cw_page.h" -uint8 (*Img_Gray)[MT9V03X_W]; // 定义指向包含 MT9V03X_W 列的 uint8 类型的二维数组的指针 -//uint8 *mt9v03x_image_copy[0]; // 定义指向 uint8 类型的一维数组的指针 -sint32 pts_left[PT_MAXLEN][2], pts_right[PT_MAXLEN][2]; -sint32 pts_left_count, pts_right_count; -float32 pts_inv_l[PT_MAXLEN][2], pts_inv_r[PT_MAXLEN][2]; -sint32 pts_inv_l_count, pts_inv_r_count; -float32 pts_filter_l[PT_MAXLEN][2], pts_filter_r[PT_MAXLEN][2]; -sint32 pts_filter_l_count, pts_filter_r_count; -float32 pts_resample_left[PT_MAXLEN][2], pts_resample_right[PT_MAXLEN][2]; -sint32 pts_resample_left_count, pts_resample_right_count; -float32 mid_left[PT_MAXLEN][2], mid_right[PT_MAXLEN][2]; -sint32 mid_left_count, mid_right_count; +uint8_t (*Img_Gray)[MT9V03X_W]; // 定义指向包含 MT9V03X_W 列的 uint8_t 类型的二维数组的指针 +// uint8_t *mt9v03x_image_copy[0]; // 定义指向 uint8_t 类型的一维数组的指针 +int32_t pts_left[PT_MAXLEN][2], pts_right[PT_MAXLEN][2]; +int32_t pts_left_count, pts_right_count; +float pts_inv_l[PT_MAXLEN][2], pts_inv_r[PT_MAXLEN][2]; +int32_t pts_inv_l_count, pts_inv_r_count; +float pts_filter_l[PT_MAXLEN][2], pts_filter_r[PT_MAXLEN][2]; +int32_t pts_filter_l_count, pts_filter_r_count; +float pts_resample_left[PT_MAXLEN][2], pts_resample_right[PT_MAXLEN][2]; +int32_t pts_resample_left_count, pts_resample_right_count; +float mid_left[PT_MAXLEN][2], mid_right[PT_MAXLEN][2]; +int32_t mid_left_count, mid_right_count; - -//左右边线局部角度变化率+非极大值抑制 +// 左右边线局部角度变化率 + 非极大值抑制 float angle_new_left[PT_MAXLEN]; float angle_new_right[PT_MAXLEN]; int angle_new_left_num, angle_new_right_num; @@ -63,10 +63,10 @@ float angle_left[PT_MAXLEN]; float angle_right[PT_MAXLEN]; int angle_left_num, angle_right_num; -// L角点 +// L 角点 int Lpt0_rpts0s_id, Lpt1_rpts1s_id; bool Lpt0_found, Lpt1_found; -int Lpt1[2],Lpt0[2]; +int Lpt1[2], Lpt0[2]; int Lpt_in0_rpts0s_id, Lpt_in1_rpts1s_id; bool Lpt_in0_found, Lpt_in1_found; @@ -85,41 +85,43 @@ float aim_distance; enum track_type_e track_type = TRACK_RIGHT; - int frame_count = 0; void img_processing(); void get_corners(); - int main(void) { clock_init(SYSTEM_CLOCK_120M); // 初始化芯片时钟 工作频率为 120MHz debug_init(); // 务必保留,本函数用于初始化 MPU 时钟 调试串口 mt9v03x_init(); - ips114_init(); + ips200_init(IPS200_TYPE_SPI); by_gpio_init(); by_exit_init(); by_pwm_init(); cw_servo_init(); - while (1) { - //while (frame_count < 20) { - // if (mt9v03x_finish_flag) { - // memcpy(mt9v03x_image_copy[0], mt9v03x_image[0], (sizeof(mt9v03x_image_copy) / sizeof(uint8_t))); - // adaptiveThreshold((uint8_t*)mt9v03x_image_copy, (uint8_t*)mt9v03x_image_copy, 188, 120, 7, 8); - // //threshold((uint8_t*)mt9v03x_image_copy, (uint8_t*)mt9v03x_image_copy, MT9V03X_W, MT9V03X_H, 110); - // ips114_show_gray_image(0, 0, mt9v03x_image_copy[0], MT9V03X_W, MT9V03X_H, MT9V03X_W, MT9V03X_H, 0); - // mt9v03x_finish_flag = 0; - // frame_count++; - // } + Page_Init(); + while (1) { + Page_Run(); + // while (frame_count < 20) { + // if (mt9v03x_finish_flag) { + // memcpy(mt9v03x_image_copy[0], mt9v03x_image[0], (sizeof(mt9v03x_image_copy) / sizeof(uint8_t))); + // adaptiveThreshold((uint8_t*)mt9v03x_image_copy, (uint8_t*)mt9v03x_image_copy, 188, 120, 7, 8); + // //threshold((uint8_t*)mt9v03x_image_copy, (uint8_t*)mt9v03x_image_copy, MT9V03X_W, MT9V03X_H, 110); + // ips114_show_gray_image(0, 0, mt9v03x_image_copy[0], MT9V03X_W, MT9V03X_H, MT9V03X_W, MT9V03X_H, 0); + // mt9v03x_finish_flag = 0; + // frame_count++; + // } //} + + /************************ 图像处理相关函数 ***************************/ if (mt9v03x_finish_flag) { - //ips114_show_gray_image(0, 0, mt9v03x_image[0], 188, 120, 188, 120,0); - memcpy(mt9v03x_image_copy[0], mt9v03x_image[0],(sizeof(mt9v03x_image_copy)/sizeof(uint8_t))); - //Img_Gray = mt9v03x_image; - //mt9v03x_image_copy[0] = Img_Gray[0]; + memcpy(mt9v03x_image_copy[0], mt9v03x_image[0], (sizeof(mt9v03x_image_copy) / sizeof(uint8_t))); + // ips114_show_gray_image(0, 0, mt9v03x_image[0], 188, 120, 188, 120,0); + // Img_Gray = mt9v03x_image; + // mt9v03x_image_copy[0] = Img_Gray[0]; mt9v03x_finish_flag = 0; state_type = COMMON_STATE; @@ -130,9 +132,7 @@ int main(void) ElementJudge(); ElementRun(); MidLineTrack(); - } - - + /************************ 图像处理相关函数 ***************************/ } } \ No newline at end of file diff --git a/app/main.h b/app/main.h index ec7ba00..10353da 100644 --- a/app/main.h +++ b/app/main.h @@ -2,35 +2,32 @@ #define MAIN_H #include "zf_common_headfile.h" +#include "gl_common.h" - -//extern uint8 *mt9v03x_image_copy[0]; -extern sint32 pts_left[PT_MAXLEN][2], pts_right[PT_MAXLEN][2]; //0:H,1:W -extern sint32 pts_left_count, pts_right_count; -extern float32 pts_inv_l[PT_MAXLEN][2], pts_inv_r[PT_MAXLEN][2]; -extern sint32 pts_inv_l_count, pts_inv_r_count; -extern float32 pts_filter_l[PT_MAXLEN][2], pts_filter_r[PT_MAXLEN][2]; -extern sint32 pts_filter_l_count, pts_filter_r_count; -extern float32 pts_resample_left[PT_MAXLEN][2], pts_resample_right[PT_MAXLEN][2]; -extern sint32 pts_resample_left_count, pts_resample_right_count; +// extern uint8 *mt9v03x_image_copy[0]; +extern int32_t pts_left[PT_MAXLEN][2], pts_right[PT_MAXLEN][2]; // 0:H,1:W +extern int32_t pts_left_count, pts_right_count; +extern float pts_inv_l[PT_MAXLEN][2], pts_inv_r[PT_MAXLEN][2]; +extern int32_t pts_inv_l_count, pts_inv_r_count; +extern float pts_filter_l[PT_MAXLEN][2], pts_filter_r[PT_MAXLEN][2]; +extern int32_t pts_filter_l_count, pts_filter_r_count; +extern float pts_resample_left[PT_MAXLEN][2], pts_resample_right[PT_MAXLEN][2]; +extern int32_t pts_resample_left_count, pts_resample_right_count; extern uint8_t mt9v03x_image_copy[MT9V03X_H][MT9V03X_W]; -extern float32 mid_left[PT_MAXLEN][2], mid_right[PT_MAXLEN][2]; -extern sint32 mid_left_count, mid_right_count; - +extern float mid_left[PT_MAXLEN][2], mid_right[PT_MAXLEN][2]; +extern int32_t mid_left_count, mid_right_count; extern float angle_left[PT_MAXLEN]; extern float angle_right[PT_MAXLEN]; extern int angle_left_num, angle_right_num; - extern float angle_new_left[PT_MAXLEN]; extern float angle_new_right[PT_MAXLEN]; extern int angle_new_left_num, angle_new_right_num; - extern int Lpt0_rpts0s_id, Lpt1_rpts1s_id; extern bool Lpt0_found, Lpt1_found; -extern int Lpt1[2],Lpt0[2]; +extern int Lpt1[2], Lpt0[2]; extern int Lpt_in0_rpts0s_id, Lpt_in1_rpts1s_id; extern bool Lpt_in0_found, Lpt_in1_found; @@ -44,9 +41,6 @@ extern float rptsn[PT_MAXLEN][2]; extern int rptsn_num; extern float aim_distance; - - - enum track_type_e { TRACK_LEFT, TRACK_RIGHT, diff --git a/app/page/cw_page.c b/app/page/cw_page.c index 34cb8e0..d948d63 100644 --- a/app/page/cw_page.c +++ b/app/page/cw_page.c @@ -1,9 +1,9 @@ #include "cw_page.h" PAGE_LIST pagelist[page_max]; -static uint8 page_busy = 0; -static int8 now_page = page_menu; -static int8 new_page = page_menu; +static uint8_t page_busy = 0; +static int8_t now_page = page_menu; +static int8_t new_page = page_menu; /** * @brief 娉ㄥ唽涓涓熀鏈〉闈紝鍖呭惈涓涓垵濮嬪寲鍑芥暟锛屽惊鐜嚱鏁帮紝閫鍑哄嚱鏁帮紝浜嬩欢鍑芥暟 @@ -15,7 +15,7 @@ static int8 new_page = page_menu; * @param eventCallback: 浜嬩欢鍑芥暟鍥炶皟 * @retval 鏃 */ -void Page_Register(uint8 pageID, char *pageText, +void Page_Register(uint8_t pageID, char *pageText, CallbackFunction_t setupCallback, CallbackFunction_t loopCallback, CallbackFunction_t exitCallback, EventFunction_t eventCallback) { pagelist[pageID].Text = pageText; @@ -66,9 +66,9 @@ void Page_OpenCurrentPage() { /** * @brief 鑾峰彇椤甸潰鐘舵 * - * @return uint8 椤甸潰蹇欒繑鍥1 绌洪棽杩斿洖0 + * @return uint8_t 椤甸潰蹇欒繑鍥1 绌洪棽杩斿洖0 */ -uint8 Page_GetStatus(void) { +uint8_t Page_GetStatus(void) { if (page_busy) return 1; else diff --git a/app/page/cw_page.h b/app/page/cw_page.h index 39159b1..cd4f20e 100644 --- a/app/page/cw_page.h +++ b/app/page/cw_page.h @@ -47,7 +47,7 @@ do{\ PageRegister_##name(name);\ }while(0) -void Page_Register(uint8 pageID, char *pageText, +void Page_Register(uint8_t pageID, char *pageText, CallbackFunction_t setupCallback, CallbackFunction_t loopCallback, CallbackFunction_t exitCallback, EventFunction_t eventCallback); @@ -55,7 +55,7 @@ void Page_EventTransmit(unsigned char event); void Page_Shift(unsigned char pageID); void Page_CloseCurrentPage(void); void Page_OpenCurrentPage(void); -uint8 Page_GetStatus(void); +uint8_t Page_GetStatus(void); void Page_Run(void); void Page_Init(void); diff --git a/app/page/cw_page_menu.c b/app/page/cw_page_menu.c index bc12d4d..4296ba6 100644 --- a/app/page/cw_page_menu.c +++ b/app/page/cw_page_menu.c @@ -44,6 +44,7 @@ static void Exit() */ static void Loop() { + Show_Marked_Image(); } /** @@ -98,9 +99,9 @@ void PageRegister_page_menu(unsigned char pageID) static void Print_Menu_p(void) { // SCREEN_showstr_style(5 * 8, 0, RED, WHITE, "#### MAIN MENU ####"); - ips114_show_string(0, 0, Text); - for (uint8 i = page_menu + 1; i < page_max; i++) { - ips114_show_string(8, i, pagelist[i].Text); + ips200_show_string(0, 0, Text); + for (uint8_t i = page_menu + 1; i < page_max; i++) { + ips200_show_string(8, i, pagelist[i].Text); // SCREEN_showstr(8, i, pagelist[i].Text); } } diff --git a/app/page/cw_page_rtcam.c b/app/page/cw_page_rtcam.c new file mode 100644 index 0000000..969963d --- /dev/null +++ b/app/page/cw_page_rtcam.c @@ -0,0 +1,106 @@ +#include "zf_common_headfile.h" +#include "cw_page_ui_widget.h" +#include "cw_page.h" + +#define LINE_HEAD 1 +#define LINE_END 7 + +static char Text[] = "RealTime Image"; + +static int8_t Curser = 1; // 瀹氫箟鍏夋爣浣嶇疆 +static int8_t Curser_Last = 1; // 瀹氫箟鍏夋爣浣嶇疆 +static void Print_Menu_p(void); +/*************************************************************************************** + * + * 浠ヤ笅涓洪〉闈㈡ā鏉垮嚱鏁 + * + ***************************************************************************************/ + +/** + * @brief 椤甸潰鍒濆鍖栦簨浠 + * @param 鏃 + * @retval 鏃 + */ +static void Setup() +{ + ips114_clear(); + Print_Menu_p(); + Print_Curser(Curser, Curser_Last); +} + +/** + * @brief 椤甸潰閫鍑轰簨浠 + * @param 鏃 + * @retval 鏃 + */ +static void Exit() +{ +} + +/** + * @brief 椤甸潰寰幆鎵ц鐨勫唴瀹 + * @param 鏃 + * @retval 鏃 + */ +static void Loop() +{ +} + +/** + * @brief 椤甸潰浜嬩欢 + * @param btn:鍙戝嚭浜嬩欢鐨勬寜閿 + * @param event:浜嬩欢缂栧彿 + * @retval 鏃 + */ +static void Event(page_event event) +{ + Curser_Last = Curser; + + if (page_event_forward == event) { + Curser--; // 鍏夋爣涓婄Щ + } else if (page_event_backward == event) { + Curser++; // 鍏夋爣涓嬬Щ + } else if (page_event_press == event) { + if (page_max > Curser && page_menu < Curser) { + Page_Shift(Curser); // 鍒囨崲鍒板厜鏍囬変腑鐨勯〉闈 + } + } + + if (Curser < LINE_HEAD) { + Curser = LINE_END; + } else if (Curser > LINE_END) { + Curser = LINE_HEAD; + } + + Print_Curser(Curser, Curser_Last); +} + +/** + * @brief 椤甸潰娉ㄥ唽鍑芥暟 + * + * @param pageID + */ +void PageRegister_page_rtcam(unsigned char pageID) +{ + Page_Register(pageID, Text, Setup, Loop, Exit, Event); +} + +/*************************************************************************************** + * + * 浠ヤ笅涓洪〉闈㈣嚜瀹氫箟鍔熻兘鍑芥暟 + * + ***************************************************************************************/ + +/** + * @brief 鎵撳嵃鑿滃崟椤 + * + */ +static void Print_Menu_p(void) +{ + // SCREEN_showstr_style(5 * 8, 0, RED, WHITE, "#### MAIN MENU ####"); + ips200_show_string(0, 0, Text); + for (uint8_t i = page_menu + 1; i < page_max; i++) { + ips200_show_string(8, i, pagelist[i].Text); + // SCREEN_showstr(8, i, pagelist[i].Text); + } +} diff --git a/app/page/cw_page_ui_widget.c b/app/page/cw_page_ui_widget.c index 69db196..d5222f8 100644 --- a/app/page/cw_page_ui_widget.c +++ b/app/page/cw_page_ui_widget.c @@ -1,4 +1,6 @@ #include "cw_page_ui_widget.h" +#include "zf_common_headfile.h" +#include "main.h" /** * @brief 缁樺埗鍏夋爣 @@ -6,60 +8,63 @@ * @param Curser_In 褰撳墠鍏夋爣浣嶇疆 * @param Curser_Last_In 涓婁竴鏃跺埢鍏夋爣浣嶇疆 */ -void Print_Curser(uint8 Curser_In, uint8 Curser_Last_In) { - ips114_show_string(0, Curser_Last_In, " "); - ips114_show_string(0, Curser_In, ">"); +void Print_Curser(uint8_t Curser_In, uint8_t Curser_Last_In) +{ + ips200_show_string(0, Curser_Last_In * 16, " "); + ips200_show_string(0, Curser_In * 16, ">"); } /** * @brief 鎵撳嵃鑿滃崟椤 * */ -void Print_Menu(const ITEM *item, uint8 item_sum) { - ips114_show_string(0, 0, " --return--"); - for (uint8 i = 0; i < item_sum; i++) { - ips114_show_string(8, i + 1, item[i].text); - } +void Print_Menu(const ITEM *item, uint8_t item_sum) +{ + ips200_show_string(0, 0, " --return--"); + for (uint8_t i = 0; i < item_sum; i++) { + ips200_show_string(8, i * 16 + 16, item[i].text); + } } /** * @brief 鎵撳嵃鏁板奸」 * */ -void Print_Value(const ITEM *item, uint8 item_sum) { -// for (uint8 i = 0; i < item_sum; i++) { -// switch (Param_Data[item[i].data_tag].type) { -// case EINT8: -// ips114_show_int(128, i + 1, -// *((int8 *)Param_Data[item[i].data_tag].p_data), 5); -// break; -// case EINT16: -// ips114_show_int(128, i + 1, -// *((int16 *)Param_Data[item[i].data_tag].p_data), 5); -// break; -// case EINT32: -// ips114_show_int(128, i + 1, -// *((int32 *)Param_Data[item[i].data_tag].p_data), 5); -// break; -// case EUINT8: -// ips114_show_int(128, i + 1, -// *((uint8 *)Param_Data[item[i].data_tag].p_data), 5); -// break; -// case EUINT16: -// ips114_show_int(128, i + 1, -// *((uint16 *)Param_Data[item[i].data_tag].p_data), 5); -// break; -// case EUINT32: -// ips114_show_int(128, i + 1, -// *((uint32 *)Param_Data[item[i].data_tag].p_data), 5); -// case EFLOAT: -// ips114_show_float(128, i + 1, -// *((float *)Param_Data[item[i].data_tag].p_data), 5, 2); -// break; -// default: -// break; -// } -// } +void Print_Value(const ITEM *item, uint8_t item_sum) +{ + // for (uint8_t i = 0; i < item_sum; i++) { + // switch (Param_Data[item[i].data_tag].type) { + // case EINT8: + // ips200_show_int(128, i + 1, + // *((int8_t *)Param_Data[item[i].data_tag].p_data), 5); + // break; + // case EINT16: + // ips200_show_int(128, i + 1, + // *((int16_t *)Param_Data[item[i].data_tag].p_data), 5); + // break; + // case EINT32: + // ips200_show_int(128, i + 1, + // *((int32_t *)Param_Data[item[i].data_tag].p_data), 5); + // break; + // case EUINT8: + // ips200_show_int(128, i + 1, + // *((uint8_t *)Param_Data[item[i].data_tag].p_data), 5); + // break; + // case EUINT16: + // ips200_show_int(128, i + 1, + // *((uint16_t *)Param_Data[item[i].data_tag].p_data), 5); + // break; + // case EUINT32: + // ips200_show_int(128, i + 1, + // *((uint32_t *)Param_Data[item[i].data_tag].p_data), 5); + // case EFLOAT: + // ips200_show_float(128, i + 1, + // *((float *)Param_Data[item[i].data_tag].p_data), 5, 2); + // break; + // default: + // break; + // } + // } } /** @@ -68,56 +73,78 @@ void Print_Value(const ITEM *item, uint8 item_sum) { * @param item_num * @param dir */ -void Set_Vaule(ITEM *item, uint8 item_num, float step) { +void Set_Vaule(ITEM *item, uint8_t item_num, float step) +{ - // if (EFLOAT == Param_Data[item[item_num].data_tag].type) { // 寰呬慨鏀瑰彉閲忎负娴偣 - // *((float *)Param_Data[item[item_num].data_tag].p_data) += step; - // ips114_show_float(128, item_num + 1, - // *((float *)Param_Data[item[item_num].data_tag].p_data), 6, - // 2); - // return; - // } + // if (EFLOAT == Param_Data[item[item_num].data_tag].type) { // 寰呬慨鏀瑰彉閲忎负娴偣 + // *((float *)Param_Data[item[item_num].data_tag].p_data) += step; + // ips200_show_float(128, item_num + 1, + // *((float *)Param_Data[item[item_num].data_tag].p_data), 6, + // 2); + // return; + // } - // if (0 < step && - // 1 > step) { // 閬垮厤姝ヨ繘鍊煎皬浜 1 鏃舵埅灏句负 0锛屼笉鐭ラ亾涓哄暐 ceil 鍑芥暟涓嶅彲鐢 - // step = 1; - // } else if (0 > step && -1 < step) { - // step = -1; - // } + // if (0 < step && + // 1 > step) { // 閬垮厤姝ヨ繘鍊煎皬浜 1 鏃舵埅灏句负 0锛屼笉鐭ラ亾涓哄暐 ceil 鍑芥暟涓嶅彲鐢 + // step = 1; + // } else if (0 > step && -1 < step) { + // step = -1; + // } - // switch (Param_Data[item[item_num].data_tag].type) { - // case EINT8: - // *((int8 *)Param_Data[item[item_num].data_tag].p_data) += (int8)step; - // ips114_show_int(128, item_num + 1, - // *((int8 *)Param_Data[item[item_num].data_tag].p_data), 5); - // break; - // case EINT16: - // *((int16 *)Param_Data[item[item_num].data_tag].p_data) += (int16)step; - // ips114_show_int(128, item_num + 1, - // *((int16 *)Param_Data[item[item_num].data_tag].p_data), 5); - // break; - // case EINT32: - // *((int32 *)Param_Data[item[item_num].data_tag].p_data) += (int32)step; - // ips114_show_int(128, item_num + 1, - // *((int32 *)Param_Data[item[item_num].data_tag].p_data), 5); - // break; - // case EUINT8: - // *((uint8 *)Param_Data[item[item_num].data_tag].p_data) += (uint8)step; - // ips114_show_int(128, item_num + 1, - // *((uint8 *)Param_Data[item[item_num].data_tag].p_data), 5); - // break; - // case EUINT16: - // *((uint16 *)Param_Data[item[item_num].data_tag].p_data) += (uint16)step; - // ips114_show_int(128, item_num + 1, - // *((uint16 *)Param_Data[item[item_num].data_tag].p_data), 5); - // break; - // case EUINT32: - // *((uint32 *)Param_Data[item[item_num].data_tag].p_data) += (uint32)step; - // ips114_show_int(128, item_num + 1, - // *((uint32 *)Param_Data[item[item_num].data_tag].p_data), 5); - // break; - // default: - // break; - // } + // switch (Param_Data[item[item_num].data_tag].type) { + // case EINT8: + // *((int8_t *)Param_Data[item[item_num].data_tag].p_data) += (int8_t)step; + // ips200_show_int(128, item_num + 1, + // *((int8_t *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EINT16: + // *((int16_t *)Param_Data[item[item_num].data_tag].p_data) += (int16_t)step; + // ips200_show_int(128, item_num + 1, + // *((int16_t *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EINT32: + // *((int32_t *)Param_Data[item[item_num].data_tag].p_data) += (int32_t)step; + // ips200_show_int(128, item_num + 1, + // *((int32_t *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EUINT8: + // *((uint8_t *)Param_Data[item[item_num].data_tag].p_data) += (uint8_t)step; + // ips200_show_int(128, item_num + 1, + // *((uint8_t *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EUINT16: + // *((uint16_t *)Param_Data[item[item_num].data_tag].p_data) += (uint16_t)step; + // ips200_show_int(128, item_num + 1, + // *((uint16_t *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // case EUINT32: + // *((uint32_t *)Param_Data[item[item_num].data_tag].p_data) += (uint32_t)step; + // ips200_show_int(128, item_num + 1, + // *((uint32_t *)Param_Data[item[item_num].data_tag].p_data), 5); + // break; + // default: + // break; + // } } +void Show_Marked_Image(void) +{ +#define IMAGE_DISPLAY_WIDTH (230U) +#define IMAGE_DISPLAY_HEIGHT (146U) +#define START_X ((240U - IMAGE_DISPLAY_WIDTH) / 2U) +#define START_Y (16U) + + float horizontal_zoom_rate = ((float)(IMAGE_DISPLAY_WIDTH)) / ((float)(MT9V03X_W)); + float vertical_zoom_rate = ((float)(IMAGE_DISPLAY_HEIGHT)) / ((float)(MT9V03X_H)); + + ips200_show_gray_image(START_X, START_Y, mt9v03x_image_copy[0], MT9V03X_W, MT9V03X_H, IMAGE_DISPLAY_WIDTH, IMAGE_DISPLAY_HEIGHT, 0); + + // 纭杈圭嚎鏁扮粍鍦ㄦ樉绀哄墠涓嶄細娓呯┖ + for (uint i = 0; i < PT_MAXLEN; i++) { + ips200_draw_point(START_X + (uint16_t)(mid_right[i][0] * horizontal_zoom_rate), START_Y + (uint16_t)(mid_right[i][1] * vertical_zoom_rate), RGB565_GREEN); + ips200_draw_point(START_X + (uint16_t)(mid_left[i][0] * horizontal_zoom_rate), START_Y + (uint16_t)(mid_left[i][1] * vertical_zoom_rate), RGB565_GREEN); + } +#undef IMAGE_DISPLAY_WIDTH +#undef START_X +#undef START_Y +} diff --git a/app/page/cw_page_ui_widget.h b/app/page/cw_page_ui_widget.h index 84634dc..666ef27 100644 --- a/app/page/cw_page_ui_widget.h +++ b/app/page/cw_page_ui_widget.h @@ -5,12 +5,13 @@ typedef struct { char *text; //鍙橀噺鏄剧ず鍚 - uint8 data_tag; //鍙橀噺缁撴瀯浣 + uint8_t data_tag; //鍙橀噺缁撴瀯浣 } ITEM; -void Print_Curser(uint8 Curser_In, uint8 Curser_Last_In); -void Print_Menu(const ITEM* item, uint8 item_sum); -void Print_Value(const ITEM* item, uint8 item_sum); -void Set_Vaule(ITEM* item, uint8 item_num, float step); +void Print_Curser(uint8_t Curser_In, uint8_t Curser_Last_In); +void Print_Menu(const ITEM* item, uint8_t item_sum); +void Print_Value(const ITEM* item, uint8_t item_sum); +void Set_Vaule(ITEM* item, uint8_t item_num, float step); +void Show_Marked_Image(void); #endif diff --git a/libraries/zf_device/zf_device_ips200.c b/libraries/zf_device/zf_device_ips200.c index 8f0a342..3fd0c1a 100644 --- a/libraries/zf_device/zf_device_ips200.c +++ b/libraries/zf_device/zf_device_ips200.c @@ -1,64 +1,64 @@ /********************************************************************************************************************* -* CH32V307VCT6 Opensourec Library 鍗筹紙CH32V307VCT6 寮婧愬簱锛夋槸涓涓熀浜庡畼鏂 SDK 鎺ュ彛鐨勭涓夋柟寮婧愬簱 -* Copyright (c) 2022 SEEKFREE 閫愰绉戞妧 -* -* 鏈枃浠舵槸CH32V307VCT6 寮婧愬簱鐨勪竴閮ㄥ垎 -* -* CH32V307VCT6 寮婧愬簱 鏄厤璐硅蒋浠 -* 鎮ㄥ彲浠ユ牴鎹嚜鐢辫蒋浠跺熀閲戜細鍙戝竷鐨 GPL锛圙NU General Public License锛屽嵆 GNU閫氱敤鍏叡璁稿彲璇侊級鐨勬潯娆 -* 鍗 GPL 鐨勭3鐗堬紙鍗 GPL3.0锛夋垨锛堟偍閫夋嫨鐨勶級浠讳綍鍚庢潵鐨勭増鏈紝閲嶆柊鍙戝竷鍜/鎴栦慨鏀瑰畠 -* -* 鏈紑婧愬簱鐨勫彂甯冩槸甯屾湜瀹冭兘鍙戞尌浣滅敤锛屼絾骞舵湭瀵瑰叾浣滀换浣曠殑淇濊瘉 -* 鐢氳嚦娌℃湁闅愬惈鐨勯傞攢鎬ф垨閫傚悎鐗瑰畾鐢ㄩ旂殑淇濊瘉 -* 鏇村缁嗚妭璇峰弬瑙 GPL -* -* 鎮ㄥ簲璇ュ湪鏀跺埌鏈紑婧愬簱鐨勫悓鏃舵敹鍒颁竴浠 GPL 鐨勫壇鏈 -* 濡傛灉娌℃湁锛岃鍙傞槄 -* -* 棰濆娉ㄦ槑锛 -* 鏈紑婧愬簱浣跨敤 GPL3.0 寮婧愯鍙瘉鍗忚 浠ヤ笂璁稿彲鐢虫槑涓鸿瘧鏂囩増鏈 -* 璁稿彲鐢虫槑鑻辨枃鐗堝湪 libraries/doc 鏂囦欢澶逛笅鐨 GPL3_permission_statement.txt 鏂囦欢涓 -* 璁稿彲璇佸壇鏈湪 libraries 鏂囦欢澶逛笅 鍗宠鏂囦欢澶逛笅鐨 LICENSE 鏂囦欢 -* 娆㈣繋鍚勪綅浣跨敤骞朵紶鎾湰绋嬪簭 浣嗕慨鏀瑰唴瀹规椂蹇呴』淇濈暀閫愰绉戞妧鐨勭増鏉冨0鏄庯紙鍗虫湰澹版槑锛 -* -* 鏂囦欢鍚嶇О zf_device_ips200 -* 鍏徃鍚嶇О 鎴愰兘閫愰绉戞妧鏈夐檺鍏徃 -* 鐗堟湰淇℃伅 鏌ョ湅 libraries/doc 鏂囦欢澶瑰唴 version 鏂囦欢 鐗堟湰璇存槑 -* 寮鍙戠幆澧 MounRiver Studio V1.8.1 -* 閫傜敤骞冲彴 CH32V307VCT6 -* 搴楅摵閾炬帴 https://seekfree.taobao.com/ -* -* 淇敼璁板綍 -* 鏃ユ湡 浣滆 澶囨敞 -* 2022-09-15 澶 first version -********************************************************************************************************************/ + * CH32V307VCT6 Opensourec Library 鍗筹紙CH32V307VCT6 寮婧愬簱锛夋槸涓涓熀浜庡畼鏂 SDK 鎺ュ彛鐨勭涓夋柟寮婧愬簱 + * Copyright (c) 2022 SEEKFREE 閫愰绉戞妧 + * + * 鏈枃浠舵槸 CH32V307VCT6 寮婧愬簱鐨勪竴閮ㄥ垎 + * + * CH32V307VCT6 寮婧愬簱 鏄厤璐硅蒋浠 + * 鎮ㄥ彲浠ユ牴鎹嚜鐢辫蒋浠跺熀閲戜細鍙戝竷鐨 GPL锛圙NU General Public License锛屽嵆 GNU 閫氱敤鍏叡璁稿彲璇侊級鐨勬潯娆 + * 鍗 GPL 鐨勭 3 鐗堬紙鍗 GPL3.0锛夋垨锛堟偍閫夋嫨鐨勶級浠讳綍鍚庢潵鐨勭増鏈紝閲嶆柊鍙戝竷鍜/鎴栦慨鏀瑰畠 + * + * 鏈紑婧愬簱鐨勫彂甯冩槸甯屾湜瀹冭兘鍙戞尌浣滅敤锛屼絾骞舵湭瀵瑰叾浣滀换浣曠殑淇濊瘉 + * 鐢氳嚦娌℃湁闅愬惈鐨勯傞攢鎬ф垨閫傚悎鐗瑰畾鐢ㄩ旂殑淇濊瘉 + * 鏇村缁嗚妭璇峰弬瑙 GPL + * + * 鎮ㄥ簲璇ュ湪鏀跺埌鏈紑婧愬簱鐨勫悓鏃舵敹鍒颁竴浠 GPL 鐨勫壇鏈 + * 濡傛灉娌℃湁锛岃鍙傞槄 + * + * 棰濆娉ㄦ槑锛 + * 鏈紑婧愬簱浣跨敤 GPL3.0 寮婧愯鍙瘉鍗忚 浠ヤ笂璁稿彲鐢虫槑涓鸿瘧鏂囩増鏈 + * 璁稿彲鐢虫槑鑻辨枃鐗堝湪 libraries/doc 鏂囦欢澶逛笅鐨 GPL3_permission_statement.txt 鏂囦欢涓 + * 璁稿彲璇佸壇鏈湪 libraries 鏂囦欢澶逛笅 鍗宠鏂囦欢澶逛笅鐨 LICENSE 鏂囦欢 + * 娆㈣繋鍚勪綅浣跨敤骞朵紶鎾湰绋嬪簭 浣嗕慨鏀瑰唴瀹规椂蹇呴』淇濈暀閫愰绉戞妧鐨勭増鏉冨0鏄庯紙鍗虫湰澹版槑锛 + * + * 鏂囦欢鍚嶇О zf_device_ips200 + * 鍏徃鍚嶇О 鎴愰兘閫愰绉戞妧鏈夐檺鍏徃 + * 鐗堟湰淇℃伅 鏌ョ湅 libraries/doc 鏂囦欢澶瑰唴 version 鏂囦欢 鐗堟湰璇存槑 + * 寮鍙戠幆澧 MounRiver Studio V1.8.1 + * 閫傜敤骞冲彴 CH32V307VCT6 + * 搴楅摵閾炬帴 https://seekfree.taobao.com/ + * + * 淇敼璁板綍 + * 鏃ユ湡 浣滆 澶囨敞 + * 2022-09-15 澶 W first version + ********************************************************************************************************************/ /********************************************************************************************************************* -* 鎺ョ嚎瀹氫箟锛 -* ------------------------------------ -* 妯″潡绠¤剼 鍗曠墖鏈虹鑴 -* // 鍙屾帓鎺掗拡 骞跺彛涓ゅ灞 纭欢寮曡剼 -* RD 鏌ョ湅 zf_device_ips200.h 涓 IPS200_RD_PIN_PARALLEL8 瀹忓畾涔 -* WR 鏌ョ湅 zf_device_ips200.h 涓 IPS200_WR_PIN_PARALLEL8 瀹忓畾涔 -* RS 鏌ョ湅 zf_device_ips200.h 涓 IPS200_RS_PIN_PARALLEL8 瀹忓畾涔 -* RST 鏌ョ湅 zf_device_ips200.h 涓 IPS200_RST_PIN_PARALLEL8 瀹忓畾涔 -* CS 鏌ョ湅 zf_device_ips200.h 涓 IPS200_CS_PIN_PARALLEL8 瀹忓畾涔 -* BL 鏌ョ湅 zf_device_ips200.h 涓 IPS200_BL_PIN_PARALLEL8 瀹忓畾涔 -* D0-D7 鏌ョ湅 zf_device_ips200.h 涓 IPS200_Dx_PIN_PARALLEL8 瀹忓畾涔 -* VCC 3.3V鐢垫簮 -* GND 鐢垫簮鍦 -* -* // 鍗曟帓鎺掗拡 SPI 涓ゅ灞 纭欢寮曡剼 -* SCL 鏌ョ湅 zf_device_ips200.h 涓 IPS200_SCL_PIN_SPI 瀹忓畾涔 -* SDA 鏌ョ湅 zf_device_ips200.h 涓 IPS200_SDA_PIN_SPI 瀹忓畾涔 -* RST 鏌ョ湅 zf_device_ips200.h 涓 IPS200_RST_PIN_SPI 瀹忓畾涔 -* DC 鏌ョ湅 zf_device_ips200.h 涓 IPS200_DC_PIN_SPI 瀹忓畾涔 -* CS 鏌ョ湅 zf_device_ips200.h 涓 IPS200_CS_PIN_SPI 瀹忓畾涔 -* BLk 鏌ョ湅 zf_device_ips200.h 涓 IPS200_BLk_PIN_SPI 瀹忓畾涔 -* VCC 3.3V鐢垫簮 -* GND 鐢垫簮鍦 -* 鏈澶у垎杈ㄧ巼 320 * 240 -* ------------------------------------ -********************************************************************************************************************/ + * 鎺ョ嚎瀹氫箟锛 + * ------------------------------------ + * 妯″潡绠¤剼 鍗曠墖鏈虹鑴 + * // 鍙屾帓鎺掗拡 骞跺彛涓ゅ灞 纭欢寮曡剼 + * RD 鏌ョ湅 zf_device_ips200.h 涓 IPS200_RD_PIN_PARALLEL8 瀹忓畾涔 + * WR 鏌ョ湅 zf_device_ips200.h 涓 IPS200_WR_PIN_PARALLEL8 瀹忓畾涔 + * RS 鏌ョ湅 zf_device_ips200.h 涓 IPS200_RS_PIN_PARALLEL8 瀹忓畾涔 + * RST 鏌ョ湅 zf_device_ips200.h 涓 IPS200_RST_PIN_PARALLEL8 瀹忓畾涔 + * CS 鏌ョ湅 zf_device_ips200.h 涓 IPS200_CS_PIN_PARALLEL8 瀹忓畾涔 + * BL 鏌ョ湅 zf_device_ips200.h 涓 IPS200_BL_PIN_PARALLEL8 瀹忓畾涔 + * D0-D7 鏌ョ湅 zf_device_ips200.h 涓 IPS200_Dx_PIN_PARALLEL8 瀹忓畾涔 + * VCC 3.3V 鐢垫簮 + * GND 鐢垫簮鍦 + * + * // 鍗曟帓鎺掗拡 SPI 涓ゅ灞 纭欢寮曡剼 + * SCL 鏌ョ湅 zf_device_ips200.h 涓 IPS200_SCL_PIN_SPI 瀹忓畾涔 + * SDA 鏌ョ湅 zf_device_ips200.h 涓 IPS200_SDA_PIN_SPI 瀹忓畾涔 + * RST 鏌ョ湅 zf_device_ips200.h 涓 IPS200_RST_PIN_SPI 瀹忓畾涔 + * DC 鏌ョ湅 zf_device_ips200.h 涓 IPS200_DC_PIN_SPI 瀹忓畾涔 + * CS 鏌ョ湅 zf_device_ips200.h 涓 IPS200_CS_PIN_SPI 瀹忓畾涔 + * BLk 鏌ョ湅 zf_device_ips200.h 涓 IPS200_BLk_PIN_SPI 瀹忓畾涔 + * VCC 3.3V 鐢垫簮 + * GND 鐢垫簮鍦 + * 鏈澶у垎杈ㄧ巼 320 * 240 + * ------------------------------------ + ********************************************************************************************************************/ #include "zf_common_clock.h" #include "zf_common_debug.h" @@ -72,21 +72,21 @@ #include "zf_device_ips200.h" static uint16 ips200_pencolor = IPS200_DEFAULT_PENCOLOR; -static uint16 ips200_bgcolor = IPS200_DEFAULT_BGCOLOR; +static uint16 ips200_bgcolor = IPS200_DEFAULT_BGCOLOR; -static ips200_type_enum ips200_display_type = IPS200_TYPE_SPI; -static ips200_dir_enum ips200_display_dir = IPS200_DEFAULT_DISPLAY_DIR; -static ips200_font_size_enum ips200_display_font = IPS200_DEFAULT_DISPLAY_FONT; +static ips200_type_enum ips200_display_type = IPS200_TYPE_SPI; +static ips200_dir_enum ips200_display_dir = IPS200_DEFAULT_DISPLAY_DIR; +static ips200_font_size_enum ips200_display_font = IPS200_DEFAULT_DISPLAY_FONT; static uint16 ips200_x_max = 240; static uint16 ips200_y_max = 320; -static gpio_pin_enum ips_rst_pin = IPS200_RST_PIN_SPI; -static gpio_pin_enum ips_bl_pin = IPS200_BLk_PIN_SPI; -static gpio_pin_enum ips_cs_pin = IPS200_CS_PIN_SPI; +static gpio_pin_enum ips_rst_pin = IPS200_RST_PIN_SPI; +static gpio_pin_enum ips_bl_pin = IPS200_BLk_PIN_SPI; +static gpio_pin_enum ips_cs_pin = IPS200_CS_PIN_SPI; #if IPS200_USE_SOFT_SPI -static soft_spi_info_struct ips200_spi; +static soft_spi_info_struct ips200_spi; //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 SPI 鍐 8bit 鏁版嵁 // 鍙傛暟璇存槑 data 鏁版嵁 @@ -94,7 +94,7 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_8bit_data_spi(command); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -#define ips200_write_8bit_data_spi(data) (soft_spi_write_8bit(&ips200_spi, (data))) +#define ips200_write_8bit_data_spi(data) (soft_spi_write_8bit(&ips200_spi, (data))) //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 SPI 鍐 8bit 鏁版嵁鏁扮粍 @@ -104,7 +104,7 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_8bit_data_spi_array(data, len); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -#define ips200_write_8bit_data_spi_array(data, len) (soft_spi_write_8bit_array(&ips200_spi, (data), (len))) +#define ips200_write_8bit_data_spi_array(data, len) (soft_spi_write_8bit_array(&ips200_spi, (data), (len))) //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 SPI 鍐 16bit 鏁版嵁 @@ -113,7 +113,7 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_16bit_data_spi(dat); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -#define ips200_write_16bit_data_spi(data) (soft_spi_write_16bit(&ips200_spi, (data))) +#define ips200_write_16bit_data_spi(data) (soft_spi_write_16bit(&ips200_spi, (data))) //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 SPI 鍐 16bit 鏁版嵁鏁扮粍 @@ -123,7 +123,7 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_16bit_data_spi_array(data, len); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -#define ips200_write_16bit_data_spi_array(data, len) (soft_spi_write_16bit_array(&ips200_spi, (data), (len))) +#define ips200_write_16bit_data_spi_array(data, len) (soft_spi_write_16bit_array(&ips200_spi, (data), (len))) #else //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 SPI 鍐 8bit 鏁版嵁 @@ -132,7 +132,7 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_8bit_data_spi(command); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -#define ips200_write_8bit_data_spi(data) (spi_write_8bit(IPS200_SPI, (data))) +#define ips200_write_8bit_data_spi(data) (spi_write_8bit(IPS200_SPI, (data))) //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 SPI 鍐 8bit 鏁版嵁鏁扮粍 @@ -142,7 +142,7 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_8bit_data_spi_array(data, len); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -#define ips200_write_8bit_data_spi_array(data, len) (spi_write_8bit_array(IPS200_SPI, (data), (len))) +#define ips200_write_8bit_data_spi_array(data, len) (spi_write_8bit_array(IPS200_SPI, (data), (len))) //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 SPI 鍐 16bit 鏁版嵁 @@ -151,7 +151,7 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_16bit_data_spi(dat); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -#define ips200_write_16bit_data_spi(data) (spi_write_16bit(IPS200_SPI, (data))) +#define ips200_write_16bit_data_spi(data) (spi_write_16bit(IPS200_SPI, (data))) //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 SPI 鍐 16bit 鏁版嵁鏁扮粍 @@ -161,7 +161,7 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_16bit_data_spi_array(data, len); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -#define ips200_write_16bit_data_spi_array(data, len) (spi_write_16bit_array(IPS200_SPI, (data), (len))) +#define ips200_write_16bit_data_spi_array(data, len) (spi_write_16bit_array(IPS200_SPI, (data), (len))) #endif //------------------------------------------------------------------------------------------------------------------- @@ -171,13 +171,12 @@ static soft_spi_info_struct ips200_spi; // 浣跨敤绀轰緥 ips200_write_16bit_data_spi(dat); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 //------------------------------------------------------------------------------------------------------------------- -static void ips200_write_data (const uint8 dat) +static void ips200_write_data(const uint8 dat) { - IPS200_DATAPORT->OUTDR = ((dat<< DATA_START_NUM) | (IPS200_DATAPORT->OUTDR & ~((uint32)(0xFF << DATA_START_NUM)))); - + IPS200_DATAPORT->OUTDR = ((dat << DATA_START_NUM) | (IPS200_DATAPORT->OUTDR & ~((uint32)(0xFF << DATA_START_NUM)))); } -//#define ips200_write_data(x) (*(volatile uint16 *)IPS200_DATA_ADD = (((uint16)x & 0x00FF) << 8)) +// #define ips200_write_data(x) (*(volatile uint16 *)IPS200_DATA_ADD = (((uint16)x & 0x00FF) << 8)) //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鍐欏懡浠 @@ -186,10 +185,9 @@ static void ips200_write_data (const uint8 dat) // 浣跨敤绀轰緥 ips200_write_command(0x2a); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 鐢ㄦ埛鏃犻渶鍏冲績 //------------------------------------------------------------------------------------------------------------------- -static void ips200_write_command (const uint8 command) +static void ips200_write_command(const uint8 command) { - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); IPS200_CS(0); IPS200_DC(0); @@ -197,9 +195,7 @@ static void ips200_write_command (const uint8 command) IPS200_DC(1); IPS200_CS(1); IPS200_CS(0); - } - else - { + } else { IPS200_CS(0); IPS200_RS(0); IPS200_RD(1); @@ -218,14 +214,11 @@ static void ips200_write_command (const uint8 command) // 浣跨敤绀轰緥 ips200_write_8bit_data(0x0C); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 鐢ㄦ埛鏃犻渶鍏冲績 //------------------------------------------------------------------------------------------------------------------- -static void ips200_write_8bit_data (const uint8 dat) +static void ips200_write_8bit_data(const uint8 dat) { - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { ips200_write_8bit_data_spi(dat); - } - else - { + } else { IPS200_CS(0); IPS200_RD(1); IPS200_WR(0); @@ -241,22 +234,18 @@ static void ips200_write_8bit_data (const uint8 dat) // 浣跨敤绀轰緥 ips200_write_8bit_data(dat,1); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 鐢ㄦ埛鏃犻渶鍏冲績 //------------------------------------------------------------------------------------------------------------------- -static void ips200_write_8bit_data_array (const uint8 *dat, uint32 len) +static void ips200_write_8bit_data_array(const uint8 *dat, uint32 len) { - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { ips200_write_8bit_data_spi_array(dat, len); - } - else - { + } else { IPS200_CS(0); IPS200_RD(1); - while(len --) - { + while (len--) { IPS200_WR(0); ips200_write_data((uint8)*dat); IPS200_WR(1); - dat ++; + dat++; } IPS200_CS(1); } @@ -269,14 +258,11 @@ static void ips200_write_8bit_data_array (const uint8 *dat, uint32 len) // 浣跨敤绀轰緥 ips200_write_16bit_data(x1); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 鐢ㄦ埛鏃犻渶鍏冲績 //------------------------------------------------------------------------------------------------------------------- -static void ips200_write_16bit_data (const uint16 dat) +static void ips200_write_16bit_data(const uint16 dat) { - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { ips200_write_16bit_data_spi(dat); - } - else - { + } else { IPS200_CS(0); IPS200_RD(1); IPS200_WR(0); @@ -295,25 +281,21 @@ static void ips200_write_16bit_data (const uint16 dat) // 浣跨敤绀轰緥 ips200_write_16bit_data(x1); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 鐢ㄦ埛鏃犻渶鍏冲績 //------------------------------------------------------------------------------------------------------------------- -static void ips200_write_16bit_data_array (const uint16 *dat, uint32 len) +static void ips200_write_16bit_data_array(const uint16 *dat, uint32 len) { - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { ips200_write_16bit_data_spi_array(dat, len); - } - else - { + } else { IPS200_CS(0); IPS200_RD(1); - while(len --) - { + while (len--) { IPS200_WR(0); ips200_write_data((uint8)(*dat >> 8)); IPS200_WR(1); IPS200_WR(0); ips200_write_data((uint8)(*dat & 0xFF)); IPS200_WR(1); - dat ++; + dat++; } IPS200_CS(1); } @@ -321,15 +303,15 @@ static void ips200_write_16bit_data_array (const uint16 *dat, uint32 len) //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 璁剧疆鏄剧ず鍖哄煙 -// 鍙傛暟璇存槑 x1 璧峰x杞村潗鏍 -// 鍙傛暟璇存槑 y1 璧峰y杞村潗鏍 -// 鍙傛暟璇存槑 x2 缁撴潫x杞村潗鏍 -// 鍙傛暟璇存槑 y2 缁撴潫y杞村潗鏍 +// 鍙傛暟璇存槑 x1 璧峰 x 杞村潗鏍 +// 鍙傛暟璇存槑 y1 璧峰 y 杞村潗鏍 +// 鍙傛暟璇存槑 x2 缁撴潫 x 杞村潗鏍 +// 鍙傛暟璇存槑 y2 缁撴潫 y 杞村潗鏍 // 杩斿洖鍙傛暟 void // 浣跨敤绀轰緥 ips200_set_region(0, 0, ips200_x_max - 1, ips200_y_max - 1); // 澶囨敞淇℃伅 鍐呴儴璋冪敤 鐢ㄦ埛鏃犻渶鍏冲績 //------------------------------------------------------------------------------------------------------------------- -static void ips200_set_region (uint16 x1, uint16 y1, uint16 x2, uint16 y2) +static void ips200_set_region(uint16 x1, uint16 y1, uint16 x2, uint16 y2) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -342,50 +324,46 @@ static void ips200_set_region (uint16 x1, uint16 y1, uint16 x2, uint16 y2) ips200_write_command(0x2a); ips200_write_16bit_data(x1); ips200_write_16bit_data(x2); - + ips200_write_command(0x2b); ips200_write_16bit_data(y1); ips200_write_16bit_data(y2); - + ips200_write_command(0x2c); } //------------------------------------------------------------------------------------------------------------------- -// 鍑芥暟绠浠 IPS200 鏄剧ずDEBUG淇℃伅鍒濆鍖 +// 鍑芥暟绠浠 IPS200 鏄剧ず DEBUG 淇℃伅鍒濆鍖 // 鍙傛暟璇存槑 void // 杩斿洖鍙傛暟 void // 浣跨敤绀轰緥 ips200_debug_init(); // 澶囨敞淇℃伅 鍐呴儴浣跨敤 鐢ㄦ埛鏃犻渶鍏冲績 //------------------------------------------------------------------------------------------------------------------- -static void ips200_debug_init (void) +static void ips200_debug_init(void) { debug_output_struct info; debug_output_struct_init(&info); - info.type_index = 1; + info.type_index = 1; info.display_x_max = ips200_x_max; info.display_y_max = ips200_y_max; - switch(ips200_display_font) - { - case IPS200_6X8_FONT: - { + switch (ips200_display_font) { + case IPS200_6X8_FONT: { info.font_x_size = 6; info.font_y_size = 8; - }break; - case IPS200_8X16_FONT: - { + } break; + case IPS200_8X16_FONT: { info.font_x_size = 8; info.font_y_size = 16; - }break; - case IPS200_16X16_FONT: - { + } break; + case IPS200_16X16_FONT: { // 鏆備笉鏀寔 - }break; + } break; } - info.output_screen = ips200_show_string; + info.output_screen = ips200_show_string; info.output_screen_clear = ips200_clear; - + debug_output_init(&info); } @@ -396,26 +374,22 @@ static void ips200_debug_init (void) // 浣跨敤绀轰緥 ips200_clear(); // 澶囨敞淇℃伅 灏嗗睆骞曟竻绌烘垚鑳屾櫙棰滆壊 //------------------------------------------------------------------------------------------------------------------- -void ips200_clear (void) +void ips200_clear(void) { uint16 color_buffer[ips200_x_max]; uint16 i = 0, j = 0; - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } ips200_set_region(0, 0, ips200_x_max - 1, ips200_y_max - 1); - for(i = 0; i < ips200_x_max; i ++) - { + for (i = 0; i < ips200_x_max; i++) { color_buffer[i] = ips200_bgcolor; } - for (j = 0; j < ips200_y_max; j ++) - { + for (j = 0; j < ips200_y_max; j++) { ips200_write_16bit_data_array(color_buffer, ips200_x_max); } - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } } @@ -427,26 +401,22 @@ void ips200_clear (void) // 浣跨敤绀轰緥 ips200_full(RGB565_BLACK); // 澶囨敞淇℃伅 灏嗗睆骞曞~鍏呮垚鎸囧畾棰滆壊 //------------------------------------------------------------------------------------------------------------------- -void ips200_full (const uint16 color) +void ips200_full(const uint16 color) { uint16 color_buffer[ips200_x_max]; uint16 i = 0, j = 0; - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } ips200_set_region(0, 0, ips200_x_max - 1, ips200_y_max - 1); - for(i = 0; i < ips200_x_max; i ++) - { + for (i = 0; i < ips200_x_max; i++) { color_buffer[i] = color; } - for (j = 0; j < ips200_y_max; j ++) - { + for (j = 0; j < ips200_y_max; j++) { ips200_write_16bit_data_array(color_buffer, ips200_x_max); } - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } } @@ -458,23 +428,20 @@ void ips200_full (const uint16 color) // 浣跨敤绀轰緥 ips200_set_dir(IPS200_PORTAIT); // 澶囨敞淇℃伅 杩欎釜鍑芥暟鍙湁鍦ㄥ垵濮嬪寲灞忓箷涔嬪墠璋冪敤鎵嶇敓鏁 //------------------------------------------------------------------------------------------------------------------- -void ips200_set_dir (ips200_dir_enum dir) +void ips200_set_dir(ips200_dir_enum dir) { ips200_display_dir = dir; - switch(ips200_display_dir) - { + switch (ips200_display_dir) { case IPS200_PORTAIT: - case IPS200_PORTAIT_180: - { + case IPS200_PORTAIT_180: { ips200_x_max = 240; ips200_y_max = 320; - }break; + } break; case IPS200_CROSSWISE: - case IPS200_CROSSWISE_180: - { + case IPS200_CROSSWISE_180: { ips200_x_max = 320; ips200_y_max = 240; - }break; + } break; } } @@ -485,7 +452,7 @@ void ips200_set_dir (ips200_dir_enum dir) // 浣跨敤绀轰緥 ips200_set_font(IPS200_8x16_FONT); // 澶囨敞淇℃伅 瀛椾綋鍙互闅忔椂鑷敱璁剧疆 璁剧疆鍚庣敓鏁 鍚庣画鏄剧ず灏辨槸鏂扮殑瀛椾綋澶у皬 //------------------------------------------------------------------------------------------------------------------- -void ips200_set_font (ips200_font_size_enum font) +void ips200_set_font(ips200_font_size_enum font) { ips200_display_font = font; } @@ -498,52 +465,50 @@ void ips200_set_font (ips200_font_size_enum font) // 浣跨敤绀轰緥 ips200_set_color(RGB565_RED, RGB565_GRAY); // 澶囨敞淇℃伅 瀛椾綋棰滆壊鍜岃儗鏅鑹蹭篃鍙互闅忔椂鑷敱璁剧疆 璁剧疆鍚庣敓鏁 //------------------------------------------------------------------------------------------------------------------- -void ips200_set_color (const uint16 pen, const uint16 bgcolor) +void ips200_set_color(const uint16 pen, const uint16 bgcolor) { ips200_pencolor = pen; - ips200_bgcolor = bgcolor; + ips200_bgcolor = bgcolor; } //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鐢荤偣 -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 [0, ips200_y_max-1] // 鍙傛暟璇存槑 color 棰滆壊鏍煎紡 RGB565 鎴栬呭彲浠ヤ娇鐢 zf_common_font.h 鍐 rgb565_color_enum 鏋氫妇鍊兼垨鑰呰嚜琛屽啓鍏 // 杩斿洖鍙傛暟 void -// 浣跨敤绀轰緥 ips200_draw_point(0, 0, RGB565_RED); //鍧愭爣0,0鐢讳竴涓孩鑹茬殑鐐 +// 浣跨敤绀轰緥 ips200_draw_point(0, 0, RGB565_RED); //鍧愭爣 0,0 鐢讳竴涓孩鑹茬殑鐐 // 澶囨敞淇℃伅 //------------------------------------------------------------------------------------------------------------------- -void ips200_draw_point (uint16 x, uint16 y, const uint16 color) +void ips200_draw_point(uint16 x, uint16 y, const uint16 color) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 zf_assert(x < ips200_x_max); zf_assert(y < ips200_y_max); - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } ips200_set_region(x, y, x, y); ips200_write_16bit_data(color); - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } } //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鐢荤嚎 -// 鍙傛暟璇存槑 x_start 鍧愭爣x鏂瑰悜鐨勮捣鐐 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y_start 鍧愭爣y鏂瑰悜鐨勮捣鐐 [0, ips200_y_max-1] -// 鍙傛暟璇存槑 x_end 鍧愭爣x鏂瑰悜鐨勭粓鐐 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y_end 鍧愭爣y鏂瑰悜鐨勭粓鐐 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x_start 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y_start 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x_end 鍧愭爣 x 鏂瑰悜鐨勭粓鐐 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y_end 鍧愭爣 y 鏂瑰悜鐨勭粓鐐 [0, ips200_y_max-1] // 鍙傛暟璇存槑 color 棰滆壊鏍煎紡 RGB565 鎴栬呭彲浠ヤ娇鐢 zf_common_font.h 鍐 rgb565_color_enum 鏋氫妇鍊兼垨鑰呰嚜琛屽啓鍏 // 杩斿洖鍙傛暟 void // 浣跨敤绀轰緥 ips200_draw_line(0, 0, 10, 10, RGB565_RED); // 鍧愭爣 0,0 鍒 10,10 鐢讳竴鏉$孩鑹茬殑绾 // 澶囨敞淇℃伅 //------------------------------------------------------------------------------------------------------------------- -void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color) +void ips200_draw_line(uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -552,61 +517,51 @@ void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_en zf_assert(x_end < ips200_x_max); zf_assert(y_end < ips200_y_max); - int16 x_dir = (x_start < x_end ? 1 : -1); - int16 y_dir = (y_start < y_end ? 1 : -1); + int16 x_dir = (x_start < x_end ? 1 : -1); + int16 y_dir = (y_start < y_end ? 1 : -1); float temp_rate = 0; - float temp_b = 0; + float temp_b = 0; - do - { - if(x_start != x_end) - { + do { + if (x_start != x_end) { temp_rate = (float)(y_start - y_end) / (float)(x_start - x_end); - temp_b = (float)y_start - (float)x_start * temp_rate; - } - else - { - while(y_start != y_end) - { + temp_b = (float)y_start - (float)x_start * temp_rate; + } else { + while (y_start != y_end) { ips200_draw_point(x_start, y_start, color); y_start += y_dir; } ips200_draw_point(x_start, y_start, color); break; } - if(func_abs(y_start - y_end) > func_abs(x_start - x_end)) - { - while(y_start != y_end) - { + if (func_abs(y_start - y_end) > func_abs(x_start - x_end)) { + while (y_start != y_end) { ips200_draw_point(x_start, y_start, color); y_start += y_dir; x_start = (int16)(((float)y_start - temp_b) / temp_rate); } ips200_draw_point(x_start, y_start, color); - } - else - { - while(x_start != x_end) - { + } else { + while (x_start != x_end) { ips200_draw_point(x_start, y_start, color); x_start += x_dir; y_start = (int16)((float)x_start * temp_rate + temp_b); } ips200_draw_point(x_start, y_start, color); } - }while(0); + } while (0); } //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鏄剧ず瀛楃 -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 dat 闇瑕佹樉绀虹殑瀛楃 // 杩斿洖鍙傛暟 void -// 浣跨敤绀轰緥 ips200_show_char(0, 0, 'x'); // 鍧愭爣0,0鍐欎竴涓瓧绗 +// 浣跨敤绀轰緥 ips200_show_char(0, 0, 'x'); // 鍧愭爣 0,0 鍐欎竴涓瓧绗 x // 澶囨敞淇℃伅 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_char (uint16 x, uint16 y, const char dat) +void ips200_show_char(uint16 x, uint16 y, const char dat) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -615,121 +570,104 @@ void ips200_show_char (uint16 x, uint16 y, const char dat) uint8 i = 0, j = 0; - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } - switch(ips200_display_font) - { - case IPS200_6X8_FONT: - { - uint16 display_buffer[6*8]; + switch (ips200_display_font) { + case IPS200_6X8_FONT: { + uint16 display_buffer[6 * 8]; ips200_set_region(x, y, x + 5, y + 7); - for(i = 0; 6 > i; i ++) - { + for (i = 0; 6 > i; i++) { // 鍑 32 鍥犱负鏄彇妯℃槸浠庣┖鏍煎紑濮嬪彇寰 绌烘牸鍦 ascii 涓簭鍙锋槸 32 uint8 temp_top = ascii_font_6x8[dat - 32][i]; - for(j = 0; 8 > j; j ++) - { - if(temp_top & 0x01) - { + for (j = 0; 8 > j; j++) { + if (temp_top & 0x01) { display_buffer[i + j * 6] = (ips200_pencolor); - } - else - { + } else { display_buffer[i + j * 6] = (ips200_bgcolor); } temp_top >>= 1; } } - ips200_write_16bit_data_array(display_buffer, 6*8); - }break; - case IPS200_8X16_FONT: - { - uint16 display_buffer[8*16]; + ips200_write_16bit_data_array(display_buffer, 6 * 8); + } break; + case IPS200_8X16_FONT: { + uint16 display_buffer[8 * 16]; ips200_set_region(x, y, x + 7, y + 15); - for(i = 0; 8 > i; i ++) - { - uint8 temp_top = ascii_font_8x16[dat - 32][i]; + for (i = 0; 8 > i; i++) { + uint8 temp_top = ascii_font_8x16[dat - 32][i]; uint8 temp_bottom = ascii_font_8x16[dat - 32][i + 8]; - for(j = 0; 8 > j; j ++) - { - if(temp_top & 0x01) - { + for (j = 0; 8 > j; j++) { + if (temp_top & 0x01) { display_buffer[i + j * 8] = (ips200_pencolor); - } - else - { + } else { display_buffer[i + j * 8] = (ips200_bgcolor); } temp_top >>= 1; } - for(j = 0; 8 > j; j ++) - { - if(temp_bottom & 0x01) - { + for (j = 0; 8 > j; j++) { + if (temp_bottom & 0x01) { display_buffer[i + j * 8 + 4 * 16] = (ips200_pencolor); - } - else - { + } else { display_buffer[i + j * 8 + 4 * 16] = (ips200_bgcolor); } temp_bottom >>= 1; } } ips200_write_16bit_data_array(display_buffer, 8 * 16); - }break; - case IPS200_16X16_FONT: - { + } break; + case IPS200_16X16_FONT: { // 鏆備笉鏀寔 - }break; + } break; } - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } } //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鏄剧ず瀛楃涓 -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 dat 闇瑕佹樉绀虹殑瀛楃涓 // 杩斿洖鍙傛暟 void // 浣跨敤绀轰緥 ips200_show_string(0, 0, "seekfree"); // 澶囨敞淇℃伅 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_string (uint16 x, uint16 y, const char dat[]) +void ips200_show_string(uint16 x, uint16 y, const char dat[]) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 zf_assert(x < ips200_x_max); zf_assert(y < ips200_y_max); - + uint16 j = 0; - while('\0' != dat[j]) - { - switch(ips200_display_font) - { - case IPS200_6X8_FONT: ips200_show_char(x + 6 * j, y, dat[j]); break; - case IPS200_8X16_FONT: ips200_show_char(x + 8 * j, y, dat[j]); break; - case IPS200_16X16_FONT: break; // 鏆備笉鏀寔 + while ('\0' != dat[j]) { + switch (ips200_display_font) { + case IPS200_6X8_FONT: + ips200_show_char(x + 6 * j, y, dat[j]); + break; + case IPS200_8X16_FONT: + ips200_show_char(x + 8 * j, y, dat[j]); + break; + case IPS200_16X16_FONT: + break; // 鏆備笉鏀寔 } - j ++; + j++; } } //------------------------------------------------------------------------------------------------------------------- -// 鍑芥暟绠浠 IPS200 鏄剧ず32浣嶆湁绗﹀彿 (鍘婚櫎鏁存暟閮ㄥ垎鏃犳晥鐨0) -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍑芥暟绠浠 IPS200 鏄剧ず 32 浣嶆湁绗﹀彿 (鍘婚櫎鏁存暟閮ㄥ垎鏃犳晥鐨 0) +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 dat 闇瑕佹樉绀虹殑鍙橀噺 鏁版嵁绫诲瀷 int32 -// 鍙傛暟璇存槑 num 闇瑕佹樉绀虹殑浣嶆暟 鏈楂10浣 涓嶅寘鍚璐熷彿 +// 鍙傛暟璇存槑 num 闇瑕佹樉绀虹殑浣嶆暟 鏈楂 10 浣 涓嶅寘鍚璐熷彿 // 杩斿洖鍙傛暟 void // 浣跨敤绀轰緥 ips200_show_int(0, 0, x, 3); // x 鍙互涓 int32 int16 int8 绫诲瀷 -// 澶囨敞淇℃伅 璐熸暟浼氭樉绀轰竴涓 鈥-鈥欏彿 +// 澶囨敞淇℃伅 璐熸暟浼氭樉绀轰竴涓-鈥欏彿 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num) +void ips200_show_int(uint16 x, uint16 y, const int32 dat, uint8 num) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -739,17 +677,15 @@ void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num) zf_assert(10 >= num); int32 dat_temp = dat; - int32 offset = 1; + int32 offset = 1; char data_buffer[12]; memset(data_buffer, 0, 12); - memset(data_buffer, ' ', num+1); + memset(data_buffer, ' ', num + 1); // 鐢ㄦ潵璁$畻浣欐暟鏄剧ず 123 鏄剧ず 2 浣嶅垯搴旇鏄剧ず 23 - if(10 > num) - { - for(; 0 < num; num --) - { + if (10 > num) { + for (; 0 < num; num--) { offset *= 10; } dat_temp %= offset; @@ -759,16 +695,16 @@ void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num) } //------------------------------------------------------------------------------------------------------------------- -// 鍑芥暟绠浠 IPS200 鏄剧ず32浣嶆棤绗﹀彿 (鍘婚櫎鏁存暟閮ㄥ垎鏃犳晥鐨0) -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips114_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips114_y_max-1] +// 鍑芥暟绠浠 IPS200 鏄剧ず 32 浣嶆棤绗﹀彿 (鍘婚櫎鏁存暟閮ㄥ垎鏃犳晥鐨 0) +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips114_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips114_y_max-1] // 鍙傛暟璇存槑 dat 闇瑕佹樉绀虹殑鍙橀噺 鏁版嵁绫诲瀷 uint32 -// 鍙傛暟璇存槑 num 闇瑕佹樉绀虹殑浣嶆暟 鏈楂10浣 涓嶅寘鍚璐熷彿 +// 鍙傛暟璇存槑 num 闇瑕佹樉绀虹殑浣嶆暟 鏈楂 10 浣 涓嶅寘鍚璐熷彿 // 杩斿洖鍙傛暟 void // 浣跨敤绀轰緥 ips200_show_uint(0, 0, x, 3); // x 鍙互涓 uint32 uint16 uint8 绫诲瀷 // 澶囨敞淇℃伅 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) +void ips200_show_uint(uint16 x, uint16 y, const uint32 dat, uint8 num) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -778,16 +714,14 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) zf_assert(10 >= num); uint32 dat_temp = dat; - int32 offset = 1; + int32 offset = 1; char data_buffer[12]; memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); // 鐢ㄦ潵璁$畻浣欐暟鏄剧ず 123 鏄剧ず 2 浣嶅垯搴旇鏄剧ず 23 - if(10 > num) - { - for(; 0 < num; num --) - { + if (10 > num) { + for (; 0 < num; num--) { offset *= 10; } dat_temp %= offset; @@ -797,20 +731,20 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) } //------------------------------------------------------------------------------------------------------------------- -// 鍑芥暟绠浠 IPS200 鏄剧ず娴偣鏁(鍘婚櫎鏁存暟閮ㄥ垎鏃犳晥鐨0) -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍑芥暟绠浠 IPS200 鏄剧ず娴偣鏁 (鍘婚櫎鏁存暟閮ㄥ垎鏃犳晥鐨 0) +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 dat 闇瑕佹樉绀虹殑鍙橀噺 鏁版嵁绫诲瀷 double -// 鍙傛暟璇存槑 num 鏁存暟浣嶆樉绀洪暱搴 鏈楂8浣 -// 鍙傛暟璇存槑 pointnum 灏忔暟浣嶆樉绀洪暱搴 鏈楂6浣 +// 鍙傛暟璇存槑 num 鏁存暟浣嶆樉绀洪暱搴 鏈楂 8 浣 +// 鍙傛暟璇存槑 pointnum 灏忔暟浣嶆樉绀洪暱搴 鏈楂 6 浣 // 杩斿洖鍙傛暟 void -// 浣跨敤绀轰緥 ips200_show_float(0, 0, x, 2, 3); // 鏄剧ず娴偣鏁 鏁存暟鏄剧ず2浣 灏忔暟鏄剧ず涓変綅 +// 浣跨敤绀轰緥 ips200_show_float(0, 0, x, 2, 3); // 鏄剧ず娴偣鏁 鏁存暟鏄剧ず 2 浣 灏忔暟鏄剧ず涓変綅 // 澶囨敞淇℃伅 鐗瑰埆娉ㄦ剰褰撳彂鐜板皬鏁伴儴鍒嗘樉绀虹殑鍊间笌浣犲啓鍏ョ殑鍊间笉涓鏍风殑鏃跺欙紝 // 鍙兘鏄敱浜庢诞鐐规暟绮惧害涓㈠け闂瀵艰嚧鐨勶紝杩欏苟涓嶆槸鏄剧ず鍑芥暟鐨勯棶棰橈紝 // 鏈夊叧闂鐨勮鎯咃紝璇疯嚜琛岀櫨搴﹀涔 娴偣鏁扮簿搴︿涪澶遍棶棰樸 -// 璐熸暟浼氭樉绀轰竴涓 鈥-鈥欏彿 +// 璐熸暟浼氭樉绀轰竴涓-鈥欏彿 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) +void ips200_show_float(uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -822,14 +756,13 @@ void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 p zf_assert(6 >= pointnum); double dat_temp = dat; - double offset = 1.0; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); - memset(data_buffer, ' ', num+pointnum+2); + memset(data_buffer, ' ', num + pointnum + 2); // 鐢ㄦ潵璁$畻浣欐暟鏄剧ず 123 鏄剧ず 2 浣嶅垯搴旇鏄剧ず 23 - for(; 0 < num; num --) - { + for (; 0 < num; num--) { offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; @@ -839,8 +772,8 @@ void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 p //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鏄剧ず浜屽煎浘鍍 鏁版嵁姣忓叓涓偣缁勬垚涓涓瓧鑺傛暟鎹 -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 *image 鍥惧儚鏁扮粍鎸囬拡 // 鍙傛暟璇存槑 width 鍥惧儚瀹為檯瀹藉害 // 鍙傛暟璇存槑 height 鍥惧儚瀹為檯楂樺害 @@ -853,7 +786,7 @@ void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 p // 杩欎釜鍑芥暟涓嶅彲浠ョ敤鏉ョ洿鎺ユ樉绀烘婚捇椋庣殑鏈帇缂╃殑浜屽煎寲鍥惧儚 // 杩欎釜鍑芥暟涓嶅彲浠ョ敤鏉ョ洿鎺ユ樉绀烘婚捇椋庣殑鏈帇缂╃殑浜屽煎寲鍥惧儚 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) +void ips200_show_binary_image(uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -862,45 +795,38 @@ void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi zf_assert(NULL != image); uint32 i = 0, j = 0; - uint8 temp = 0; + uint8 temp = 0; uint32 width_index = 0; uint16 data_buffer[dis_width]; const uint8 *image_temp; - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } - ips200_set_region(x, y, x + dis_width - 1, y + dis_height - 1); // 璁剧疆鏄剧ず鍖哄煙 + ips200_set_region(x, y, x + dis_width - 1, y + dis_height - 1); // 璁剧疆鏄剧ず鍖哄煙 - for(j = 0; j < dis_height; j ++) - { - image_temp = image + j * height / dis_height * width / 8; // 鐩存帴瀵 image 鎿嶄綔浼 Hardfault 鏆傛椂涓嶇煡閬撲负浠涔 - for(i = 0; i < dis_width; i ++) - { + for (j = 0; j < dis_height; j++) { + image_temp = image + j * height / dis_height * width / 8; // 鐩存帴瀵 image 鎿嶄綔浼 Hardfault 鏆傛椂涓嶇煡閬撲负浠涔 + for (i = 0; i < dis_width; i++) { width_index = i * width / dis_width; - temp = *(image_temp + width_index / 8); // 璇诲彇鍍忕礌鐐 - if(0x80 & (temp << (width_index % 8))) - { + temp = *(image_temp + width_index / 8); // 璇诲彇鍍忕礌鐐 + if (0x80 & (temp << (width_index % 8))) { data_buffer[i] = (RGB565_WHITE); - } - else - { + } else { data_buffer[i] = (RGB565_BLACK); } } ips200_write_16bit_data_array(data_buffer, dis_width); } - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } } //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鏄剧ず 8bit 鐏板害鍥惧儚 甯︿簩鍊煎寲闃堝 -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 *image 鍥惧儚鏁扮粍鎸囬拡 // 鍙傛暟璇存槑 width 鍥惧儚瀹為檯瀹藉害 // 鍙傛暟璇存槑 height 鍥惧儚瀹為檯楂樺害 @@ -914,7 +840,7 @@ void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 濡傛灉瑕佹樉绀轰簩鍊煎寲鍥惧儚 鐩存帴淇敼鏈鍚庝竴涓弬鏁颁负闇瑕佺殑浜屽煎寲闃堝煎嵆鍙 // 濡傛灉瑕佹樉绀轰簩鍊煎寲鍥惧儚 鐩存帴淇敼鏈鍚庝竴涓弬鏁颁负闇瑕佺殑浜屽煎寲闃堝煎嵆鍙 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) +void ips200_show_gray_image(uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -923,50 +849,41 @@ void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt zf_assert(NULL != image); uint32 i = 0, j = 0; - uint16 color = 0,temp = 0; + uint16 color = 0, temp = 0; uint16 data_buffer[dis_width]; const uint8 *image_temp; - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } - ips200_set_region(x, y, x + dis_width - 1, y + dis_height - 1); // 璁剧疆鏄剧ず鍖哄煙 + ips200_set_region(x, y, x + dis_width - 1, y + dis_height - 1); // 璁剧疆鏄剧ず鍖哄煙 - for(j = 0; j < dis_height; j ++) - { - image_temp = image + j * height / dis_height * width; // 鐩存帴瀵 image 鎿嶄綔浼 Hardfault 鏆傛椂涓嶇煡閬撲负浠涔 - for(i = 0; i < dis_width; i ++) - { - temp = *(image_temp + i * width / dis_width); // 璇诲彇鍍忕礌鐐 - if(threshold == 0) - { - color = (0x001f & ((temp) >> 3)) << 11; - color = color | (((0x003f) & ((temp) >> 2)) << 5); - color = color | (0x001f & ((temp) >> 3)); + for (j = 0; j < dis_height; j++) { + image_temp = image + j * height / dis_height * width; // 鐩存帴瀵 image 鎿嶄綔浼 Hardfault 鏆傛椂涓嶇煡閬撲负浠涔 + for (i = 0; i < dis_width; i++) { + temp = *(image_temp + i * width / dis_width); // 璇诲彇鍍忕礌鐐 + if (threshold == 0) { + color = (0x001f & ((temp) >> 3)) << 11; + color = color | (((0x003f) & ((temp) >> 2)) << 5); + color = color | (0x001f & ((temp) >> 3)); data_buffer[i] = (color); - } - else if(temp < threshold) - { + } else if (temp < threshold) { data_buffer[i] = (RGB565_BLACK); - } - else - { + } else { data_buffer[i] = (RGB565_WHITE); } } ips200_write_16bit_data_array(data_buffer, dis_width); } - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } } //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鏄剧ず RGB565 褰╄壊鍥惧儚 -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 *image 鍥惧儚鏁扮粍鎸囬拡 // 鍙傛暟璇存槑 width 鍥惧儚瀹為檯瀹藉害 // 鍙傛暟璇存槑 height 鍥惧儚瀹為檯楂樺害 @@ -980,7 +897,7 @@ void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 濡傛灉瑕佹樉绀轰綆浣嶅湪鍓嶇殑鍏朵粬 RGB565 鍥惧儚 淇敼鏈鍚庝竴涓弬鏁板嵆鍙 // 濡傛灉瑕佹樉绀轰綆浣嶅湪鍓嶇殑鍏朵粬 RGB565 鍥惧儚 淇敼鏈鍚庝竴涓弬鏁板嵆鍙 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) +void ips200_show_rgb565_image(uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -992,38 +909,31 @@ void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w uint16 data_buffer[dis_width]; const uint16 *image_temp; - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } - ips200_set_region(x, y, x + dis_width - 1, y + dis_height - 1); // 璁剧疆鏄剧ず鍖哄煙 + ips200_set_region(x, y, x + dis_width - 1, y + dis_height - 1); // 璁剧疆鏄剧ず鍖哄煙 - for(j = 0; j < dis_height; j ++) - { - image_temp = image + j * height / dis_height * width; // 鐩存帴瀵 image 鎿嶄綔浼 Hardfault 鏆傛椂涓嶇煡閬撲负浠涔 - for(i = 0; i < dis_width; i ++) - { - data_buffer[i] = *(image_temp + i * width / dis_width); // 璇诲彇鍍忕礌鐐 + for (j = 0; j < dis_height; j++) { + image_temp = image + j * height / dis_height * width; // 鐩存帴瀵 image 鎿嶄綔浼 Hardfault 鏆傛椂涓嶇煡閬撲负浠涔 + for (i = 0; i < dis_width; i++) { + data_buffer[i] = *(image_temp + i * width / dis_width); // 璇诲彇鍍忕礌鐐 } - if(color_mode) - { + if (color_mode) { ips200_write_8bit_data_array((uint8 *)data_buffer, dis_width * 2); - } - else - { + } else { ips200_write_16bit_data_array(data_buffer, dis_width); } } - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } } //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 IPS200 鏄剧ず娉㈠舰 -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 *wave 娉㈠舰鏁扮粍鎸囬拡 // 鍙傛暟璇存槑 width 娉㈠舰瀹為檯瀹藉害 // 鍙傛暟璇存槑 value_max 娉㈠舰瀹為檯鏈澶у @@ -1033,7 +943,7 @@ void ips200_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 w // 浣跨敤绀轰緥 ips200_show_wave(0, 0, data, 128, 64, 64, 32); // 澶囨敞淇℃伅 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max) +void ips200_show_wave(uint16 x, uint16 y, const uint16 *wave, uint16 width, uint16 value_max, uint16 dis_width, uint16 dis_value_max) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -1045,28 +955,22 @@ void ips200_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uin uint32 width_index = 0, value_max_index = 0; uint16 data_buffer[dis_width]; - - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } - ips200_set_region(x, y, x + dis_width - 1, y + dis_value_max - 1); // 璁剧疆鏄剧ず鍖哄煙 - for(j = 0; j < dis_value_max; j ++) - { - for(i = 0; i < dis_width; i ++) - { - data_buffer[i] = (ips200_bgcolor); + ips200_set_region(x, y, x + dis_width - 1, y + dis_value_max - 1); // 璁剧疆鏄剧ず鍖哄煙 + for (j = 0; j < dis_value_max; j++) { + for (i = 0; i < dis_width; i++) { + data_buffer[i] = (ips200_bgcolor); } ips200_write_16bit_data_array(data_buffer, dis_width); } - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } - for(i = 0; i < dis_width; i ++) - { - width_index = i * width / dis_width; + for (i = 0; i < dis_width; i++) { + width_index = i * width / dis_width; value_max_index = *(wave + width_index) * (dis_value_max - 1) / value_max; ips200_draw_point(i + x, (dis_value_max - 1) - value_max_index + y, ips200_pencolor); } @@ -1074,17 +978,17 @@ void ips200_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uin //------------------------------------------------------------------------------------------------------------------- // 鍑芥暟绠浠 姹夊瓧鏄剧ず -// 鍙傛暟璇存槑 x 鍧愭爣x鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] -// 鍙傛暟璇存槑 y 鍧愭爣y鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] +// 鍙傛暟璇存槑 x 鍧愭爣 x 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_x_max-1] +// 鍙傛暟璇存槑 y 鍧愭爣 y 鏂瑰悜鐨勮捣鐐 鍙傛暟鑼冨洿 [0, ips200_y_max-1] // 鍙傛暟璇存槑 size 鍙栨ā鐨勬椂鍊欒缃殑姹夊瓧瀛椾綋澶у皬 涔熷氨鏄竴涓眽瀛楀崰鐢ㄧ殑鐐归樀闀垮涓哄灏戜釜鐐 鍙栨ā鐨勬椂鍊欓渶瑕侀暱瀹芥槸涓鏍风殑 // 鍙傛暟璇存槑 *chinese_buffer 闇瑕佹樉绀虹殑姹夊瓧鏁扮粍 // 鍙傛暟璇存槑 number 闇瑕佹樉绀哄灏戜綅 // 鍙傛暟璇存槑 color 棰滆壊鏍煎紡 RGB565 鎴栬呭彲浠ヤ娇鐢 zf_common_font.h 鍐 rgb565_color_enum 鏋氫妇鍊兼垨鑰呰嚜琛屽啓鍏 // 杩斿洖鍙傛暟 void -// 浣跨敤绀轰緥 ips200_show_chinese(0, 0, 16, chinese_test[0], 4, RGB565_RED);//鏄剧ずfont鏂囦欢閲岄潰鐨 绀轰緥 -// 澶囨敞淇℃伅 浣跨敤PCtoLCD2002杞欢鍙栨ā 闃寸爜銆侀愯寮忋侀『鍚 16*16 +// 浣跨敤绀轰緥 ips200_show_chinese(0, 0, 16, chinese_test[0], 4, RGB565_RED);//鏄剧ず font 鏂囦欢閲岄潰鐨 绀轰緥 +// 澶囨敞淇℃伅 浣跨敤 PCtoLCD2002 杞欢鍙栨ā 闃寸爜銆侀愯寮忋侀『鍚 16*16 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number, const uint16 color) +void ips200_show_chinese(uint16 x, uint16 y, uint8 size, const uint8 *chinese_buffer, uint8 number, const uint16 color) { // 濡傛灉绋嬪簭鍦ㄨ緭鍑轰簡鏂█淇℃伅 骞朵笖鎻愮ず鍑洪敊浣嶇疆鍦ㄨ繖閲 // 閭d箞涓鑸槸灞忓箷鏄剧ず鐨勬椂鍊欒秴杩囧睆骞曞垎杈ㄧ巼鑼冨洿浜 @@ -1092,64 +996,54 @@ void ips200_show_chinese (uint16 x, uint16 y, uint8 size, const uint8 *chinese_b zf_assert(y < ips200_y_max); zf_assert(NULL != chinese_buffer); - int i = 0, j = 0, k = 0; + int i = 0, j = 0, k = 0; uint8 temp = 0, temp1 = 0, temp2 = 0; const uint8 *p_data = chinese_buffer; - + temp2 = size / 8; - - if(IPS200_TYPE_SPI == ips200_display_type) - { + + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } ips200_set_region(x, y, number * size - 1 + x, y + size - 1); - - for(i = 0; i < size; i ++) - { - temp1 = number; + + for (i = 0; i < size; i++) { + temp1 = number; p_data = chinese_buffer + i * temp2; - while(temp1 --) - { - for(k = 0; k < temp2; k ++) - { - for(j = 8; 0 < j; j --) - { + while (temp1--) { + for (k = 0; k < temp2; k++) { + for (j = 8; 0 < j; j--) { temp = (*p_data >> (j - 1)) & 0x01; - if(temp) - { + if (temp) { ips200_write_16bit_data(color); - } - else - { + } else { ips200_write_16bit_data(ips200_bgcolor); } } - p_data ++; + p_data++; } p_data = p_data - temp2 + temp2 * size; - } + } } - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } } //------------------------------------------------------------------------------------------------------------------- -// 鍑芥暟绠浠 2瀵 IPS娑叉櫠鍒濆鍖 +// 鍑芥暟绠浠 2 瀵 IPS 娑叉櫠鍒濆鍖 // 鍙傛暟璇存槑 type_select 涓ゅ灞忔帴鍙g被鍨 IPS200_TYPE_SPI 涓 SPI 鎺ュ彛涓插彛涓ゅ灞 IPS200_TYPE_PARALLEL8 涓 8080 鍗忚鍏綅骞跺彛涓ゅ灞 // 杩斿洖鍙傛暟 void // 浣跨敤绀轰緥 ips200_init(IPS200_TYPE_PARALLEL8); // 澶囨敞淇℃伅 //------------------------------------------------------------------------------------------------------------------- -void ips200_init (ips200_type_enum type_select) +void ips200_init(ips200_type_enum type_select) { - if(IPS200_TYPE_SPI == type_select) - { + if (IPS200_TYPE_SPI == type_select) { ips200_display_type = IPS200_TYPE_SPI; - ips_rst_pin = IPS200_RST_PIN_SPI; - ips_bl_pin = IPS200_BLk_PIN_SPI; - ips_cs_pin = IPS200_CS_PIN_SPI; + ips_rst_pin = IPS200_RST_PIN_SPI; + ips_bl_pin = IPS200_BLk_PIN_SPI; + ips_cs_pin = IPS200_CS_PIN_SPI; #if IPS200_USE_SOFT_SPI soft_spi_init(&ips200_spi, 0, IPS200_SOFT_SPI_DELAY, IPS200_SCL_PIN, IPS200_SDA_PIN, SOFT_SPI_PIN_NULL, SOFT_SPI_PIN_NULL); #else @@ -1160,65 +1054,68 @@ void ips200_init (ips200_type_enum type_select) gpio_init(ips_rst_pin, GPO, GPIO_LOW, GPO_PUSH_PULL); gpio_init(IPS200_CS_PIN_SPI, GPO, GPIO_LOW, GPO_PUSH_PULL); gpio_init(ips_bl_pin, GPO, GPIO_HIGH, GPO_PUSH_PULL); - } - else - { + } else { ips200_display_type = IPS200_TYPE_PARALLEL8; - ips_rst_pin = IPS200_RST_PIN_PARALLEL8; - ips_bl_pin = IPS200_BL_PIN_PARALLEL8; - ips_cs_pin = IPS200_CS_PIN_PARALLEL8; + ips_rst_pin = IPS200_RST_PIN_PARALLEL8; + ips_bl_pin = IPS200_BL_PIN_PARALLEL8; + ips_cs_pin = IPS200_CS_PIN_PARALLEL8; - gpio_init(IPS200_RD_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); - gpio_init(IPS200_WR_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); - gpio_init(IPS200_RS_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); + gpio_init(IPS200_RD_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); + gpio_init(IPS200_WR_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); + gpio_init(IPS200_RS_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); gpio_init(IPS200_RST_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); - gpio_init(IPS200_CS_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); - gpio_init(IPS200_BL_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); - //#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) - //#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) - //#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) - //#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) - //#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) - //#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) - //#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) + gpio_init(IPS200_CS_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); + gpio_init(IPS200_BL_PIN_PARALLEL8, GPO, 1, GPO_PUSH_PULL); + // #define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) + // #define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) + // #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) + // #define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) + // #define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) + // #define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) + // #define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) - uint8 i = 0; - uint8 pin_value = (((uint32)IPS200_DATAPORT - GPIOA_BASE)/0x400) * 0x20 + DATA_START_NUM; // 鑾峰彇绔彛鐨勬灇涓句綋鍊 + uint8 i = 0; + uint8 pin_value = (((uint32)IPS200_DATAPORT - GPIOA_BASE) / 0x400) * 0x20 + DATA_START_NUM; // 鑾峰彇绔彛鐨勬灇涓句綋鍊 - for(i = 0;i < 8;i++) - { + for (i = 0; i < 8; i++) { gpio_init((gpio_pin_enum)(pin_value + i), GPO, 0, GPO_PUSH_PULL); } } ips200_set_dir(ips200_display_dir); ips200_set_color(ips200_pencolor, ips200_bgcolor); - + IPS200_BL(1); - IPS200_RST(0); + IPS200_RST(0); system_delay_ms(5); - IPS200_RST(1); + IPS200_RST(1); system_delay_ms(120); - - if(IPS200_TYPE_SPI == ips200_display_type) - { + + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(0); } ips200_write_command(0x11); system_delay_ms(120); ips200_write_command(0x36); - switch(ips200_display_dir) - { - case IPS200_PORTAIT: ips200_write_8bit_data(0x00); break; - case IPS200_PORTAIT_180: ips200_write_8bit_data(0xC0); break; - case IPS200_CROSSWISE: ips200_write_8bit_data(0x70); break; - case IPS200_CROSSWISE_180: ips200_write_8bit_data(0xA0); break; + switch (ips200_display_dir) { + case IPS200_PORTAIT: + ips200_write_8bit_data(0x00); + break; + case IPS200_PORTAIT_180: + ips200_write_8bit_data(0xC0); + break; + case IPS200_CROSSWISE: + ips200_write_8bit_data(0x70); + break; + case IPS200_CROSSWISE_180: + ips200_write_8bit_data(0xA0); + break; } ips200_write_command(0x3A); ips200_write_8bit_data(0x05); - + ips200_write_command(0xB2); ips200_write_8bit_data(0x0C); ips200_write_8bit_data(0x0C); @@ -1230,27 +1127,27 @@ void ips200_init (ips200_type_enum type_select) ips200_write_8bit_data(0x35); ips200_write_command(0xBB); - ips200_write_8bit_data(0x29); // 32 Vcom=1.35V + ips200_write_8bit_data(0x29); // 32 Vcom=1.35V ips200_write_command(0xC2); ips200_write_8bit_data(0x01); ips200_write_command(0xC3); - ips200_write_8bit_data(0x19); // GVDD=4.8V + ips200_write_8bit_data(0x19); // GVDD=4.8V ips200_write_command(0xC4); - ips200_write_8bit_data(0x20); // VDV, 0x20:0v + ips200_write_8bit_data(0x20); // VDV, 0x20:0v ips200_write_command(0xC5); - ips200_write_8bit_data(0x1A); // VCOM Offset Set + ips200_write_8bit_data(0x1A); // VCOM Offset Set ips200_write_command(0xC6); - ips200_write_8bit_data(0x01F); // 0x0F:60Hz + ips200_write_8bit_data(0x01F); // 0x0F:60Hz ips200_write_command(0xD0); ips200_write_8bit_data(0xA4); ips200_write_8bit_data(0xA1); - + ips200_write_command(0xE0); ips200_write_8bit_data(0xD0); ips200_write_8bit_data(0x08); @@ -1267,7 +1164,7 @@ void ips200_init (ips200_type_enum type_select) ips200_write_8bit_data(0x31); ips200_write_8bit_data(0x34); - ips200_write_command(0xE1); + ips200_write_command(0xE1); ips200_write_8bit_data(0xD0); ips200_write_8bit_data(0x08); ips200_write_8bit_data(0x0E); @@ -1284,13 +1181,12 @@ void ips200_init (ips200_type_enum type_select) ips200_write_8bit_data(0x34); ips200_write_command(0x21); - + ips200_write_command(0x29); - if(IPS200_TYPE_SPI == ips200_display_type) - { + if (IPS200_TYPE_SPI == ips200_display_type) { IPS200_CS(1); } - ips200_clear(); // 鍒濆鍖栦负鐧藉睆 + ips200_clear(); // 鍒濆鍖栦负鐧藉睆 ips200_debug_init(); } diff --git a/libraries/zf_device/zf_device_ips200.h b/libraries/zf_device/zf_device_ips200.h index 8a4c04d..3ff2843 100644 --- a/libraries/zf_device/zf_device_ips200.h +++ b/libraries/zf_device/zf_device_ips200.h @@ -64,7 +64,7 @@ #include "zf_common_typedef.h" -// --------------------鍗曟帓涓ゅ灞忓箷SPI鎺ュ彛寮曡剼瀹氫箟--------------------// +// --------------------鍗曟帓涓ゅ灞忓箷 SPI 鎺ュ彛寮曡剼瀹氫箟--------------------// #define IPS200_USE_SOFT_SPI (0 ) // 榛樿浣跨敤纭欢 SPI 鏂瑰紡椹卞姩 寤鸿浣跨敤纭欢 SPI 鏂瑰紡椹卞姩 #if IPS200_USE_SOFT_SPI // 杩欎袱娈 棰滆壊姝e父鐨勬墠鏄纭殑 棰滆壊鐏扮殑灏辨槸娌℃湁鐢ㄧ殑 @@ -85,13 +85,18 @@ #endif // 濡傛灉浣跨敤鐨勬槸鍗曟帓鎺掗拡鐨勪袱瀵稿睆骞 SPI 椹卞姩鎺у埗寮曡剼 鍙互淇敼 -#define IPS200_RST_PIN_SPI (B7 ) // 娑叉櫠澶嶄綅寮曡剼瀹氫箟 -#define IPS200_DC_PIN_SPI (D7 ) // 娑叉櫠鍛戒护浣嶅紩鑴氬畾涔 -#define IPS200_CS_PIN_SPI (D4 ) -#define IPS200_BLk_PIN_SPI (D0 ) +// #define IPS200_RST_PIN_SPI (B7 ) // 娑叉櫠澶嶄綅寮曡剼瀹氫箟 +// #define IPS200_DC_PIN_SPI (D7 ) // 娑叉櫠鍛戒护浣嶅紩鑴氬畾涔 +// #define IPS200_CS_PIN_SPI (D4 ) +// #define IPS200_BLk_PIN_SPI (D0 ) + +#define IPS200_RST_PIN_SPI (D8 ) // 娑叉櫠澶嶄綅寮曡剼瀹氫箟 +#define IPS200_DC_PIN_SPI (D9 ) // 娑叉櫠鍛戒护浣嶅紩鑴氬畾涔 +#define IPS200_CS_PIN_SPI (D10 ) +#define IPS200_BLk_PIN_SPI (D11 ) -// --------------------鍗曟帓涓ゅ灞忓箷SPI鎺ュ彛寮曡剼瀹氫箟--------------------// +// --------------------鍗曟帓涓ゅ灞忓箷 SPI 鎺ュ彛寮曡剼瀹氫箟--------------------// @@ -103,16 +108,16 @@ #define IPS200_CS_PIN_PARALLEL8 (D4 ) #define IPS200_BL_PIN_PARALLEL8 (D0 ) -//8涓暟鎹紩鑴氬繀椤昏繛缁 渚嬪B0-B7,B6-B13绛夌瓑銆 +//8 涓暟鎹紩鑴氬繀椤昏繛缁 渚嬪 B0-B7,B6-B13 绛夌瓑銆 //--------------鏁版嵁绔彛瀵勫瓨鍣-------------- #define IPS200_DATAPORT GPIOE //--------------鏁版嵁绔彛璧峰鍦板潃鍋忕Щ-------------- #define DATA_START_NUM 0 -//渚嬶細D1-D8 IPS200_DATAPORT璁剧疆涓篏PIOD DATA_START_NUM璁剧疆涓1 -//渚嬶細C5-C12 IPS200_DATAPORT璁剧疆涓篏PIOC DATA_START_NUM璁剧疆涓5 -// --------------------鍙屾帓SPI鎺ュ彛涓ゅ灞忓箷寮曡剼瀹氫箟--------------------// +//渚嬶細D1-D8 IPS200_DATAPORT 璁剧疆涓 GPIOD DATA_START_NUM 璁剧疆涓 1 +//渚嬶細C5-C12 IPS200_DATAPORT 璁剧疆涓 GPIOC DATA_START_NUM 璁剧疆涓 5 +// --------------------鍙屾帓 SPI 鎺ュ彛涓ゅ灞忓箷寮曡剼瀹氫箟--------------------// #define IPS200_DEFAULT_DISPLAY_DIR (IPS200_PORTAIT) // 榛樿鐨勬樉绀烘柟鍚 #define IPS200_DEFAULT_PENCOLOR (RGB565_RED ) // 榛樿鐨勭敾绗旈鑹 @@ -139,9 +144,9 @@ typedef enum typedef enum { IPS200_PORTAIT = 0, // 绔栧睆妯″紡 - IPS200_PORTAIT_180 = 1, // 绔栧睆妯″紡 鏃嬭浆180 + IPS200_PORTAIT_180 = 1, // 绔栧睆妯″紡 鏃嬭浆 180 IPS200_CROSSWISE = 2, // 妯睆妯″紡 - IPS200_CROSSWISE_180 = 3, // 妯睆妯″紡 鏃嬭浆180 + IPS200_CROSSWISE_180 = 3, // 妯睆妯″紡 鏃嬭浆 180 }ips200_dir_enum; typedef enum