diff --git a/Example/E01_gpio_demo/.settings/org.eclipse.core.resources.prefs b/Example/E01_gpio_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E01_gpio_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E01_gpio_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E01_gpio_demo/libraries/doc/version.txt b/Example/E01_gpio_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E01_gpio_demo/libraries/doc/version.txt +++ b/Example/E01_gpio_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E01_gpio_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E01_gpio_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E01_gpio_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E01_gpio_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E01_gpio_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips114.c b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips114.h b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips200.c b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips200.h b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_oled.c b/Example/E01_gpio_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_oled.h b/Example/E01_gpio_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_tft180.c b/Example/E01_gpio_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_tft180.h b/Example/E01_gpio_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E01_gpio_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E01_gpio_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E01_gpio_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E01_gpio_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E01_gpio_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E01_gpio_demo/user/cpu0_main.c b/Example/E01_gpio_demo/user/cpu0_main.c index 57e6331..96ee362 100644 --- a/Example/E01_gpio_demo/user/cpu0_main.c +++ b/Example/E01_gpio_demo/user/cpu0_main.c @@ -65,13 +65,13 @@ #define LED3 (P21_5) #define LED4 (P21_4) -#define KEY1 (P22_0) -#define KEY2 (P22_1) -#define KEY3 (P22_2) -#define KEY4 (P22_3) +#define KEY1 (P20_6) +#define KEY2 (P20_7) +#define KEY3 (P11_2) +#define KEY4 (P11_3) -#define SWITCH1 (P33_12) -#define SWITCH2 (P33_13) +#define SWITCH1 (P33_11) +#define SWITCH2 (P33_12) uint16 delay_time = 0; uint8 led_state = 0; @@ -92,8 +92,8 @@ int core0_main(void) gpio_init(KEY3, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 KEY3 输入 默认高电平 上拉输入 gpio_init(KEY4, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 KEY4 输入 默认高电平 上拉输入 - gpio_init(SWITCH1, GPI, GPIO_HIGH, GPI_FLOATING_IN); // 初始化 SWITCH1 输入 默认高电平 浮空输入 - gpio_init(SWITCH2, GPI, GPIO_HIGH, GPI_FLOATING_IN); // 初始化 SWITCH2 输入 默认高电平 浮空输入 + gpio_init(SWITCH1, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 SWITCH1 输入 默认高电平 上拉输入 + gpio_init(SWITCH2, GPI, GPIO_HIGH, GPI_PULL_UP); // 初始化 SWITCH2 输入 默认高电平 上拉输入 // 此处编写用户代码 例如外设初始化代码等 cpu_wait_event_ready(); // 等待所有核心初始化完毕 diff --git a/Example/E02_uart_demo/.settings/org.eclipse.core.resources.prefs b/Example/E02_uart_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E02_uart_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E02_uart_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E02_uart_demo/libraries/doc/version.txt b/Example/E02_uart_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E02_uart_demo/libraries/doc/version.txt +++ b/Example/E02_uart_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E02_uart_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E02_uart_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E02_uart_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E02_uart_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E02_uart_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_ips114.c b/Example/E02_uart_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_ips114.h b/Example/E02_uart_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_ips200.c b/Example/E02_uart_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_ips200.h b/Example/E02_uart_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_oled.c b/Example/E02_uart_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_oled.h b/Example/E02_uart_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_tft180.c b/Example/E02_uart_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_tft180.h b/Example/E02_uart_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E02_uart_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E02_uart_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E02_uart_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E02_uart_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E02_uart_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E03_adc_demo/.settings/org.eclipse.core.resources.prefs b/Example/E03_adc_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E03_adc_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E03_adc_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E03_adc_demo/libraries/doc/version.txt b/Example/E03_adc_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E03_adc_demo/libraries/doc/version.txt +++ b/Example/E03_adc_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E03_adc_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E03_adc_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E03_adc_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E03_adc_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E03_adc_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_ips114.c b/Example/E03_adc_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_ips114.h b/Example/E03_adc_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_ips200.c b/Example/E03_adc_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_ips200.h b/Example/E03_adc_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_oled.c b/Example/E03_adc_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_oled.h b/Example/E03_adc_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_tft180.c b/Example/E03_adc_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_tft180.h b/Example/E03_adc_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E03_adc_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E03_adc_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E03_adc_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E03_adc_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E03_adc_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E04_pwm_demo/.settings/org.eclipse.core.resources.prefs b/Example/E04_pwm_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E04_pwm_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E04_pwm_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E04_pwm_demo/libraries/doc/version.txt b/Example/E04_pwm_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E04_pwm_demo/libraries/doc/version.txt +++ b/Example/E04_pwm_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E04_pwm_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E04_pwm_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E04_pwm_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E04_pwm_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E04_pwm_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips114.c b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips114.h b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips200.c b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips200.h b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_oled.c b/Example/E04_pwm_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_oled.h b/Example/E04_pwm_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_tft180.c b/Example/E04_pwm_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_tft180.h b/Example/E04_pwm_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E04_pwm_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E04_pwm_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E04_pwm_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E04_pwm_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E04_pwm_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E05_pit_demo/.settings/org.eclipse.core.resources.prefs b/Example/E05_pit_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E05_pit_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E05_pit_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E05_pit_demo/libraries/doc/version.txt b/Example/E05_pit_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E05_pit_demo/libraries/doc/version.txt +++ b/Example/E05_pit_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E05_pit_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E05_pit_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E05_pit_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E05_pit_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E05_pit_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_ips114.c b/Example/E05_pit_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_ips114.h b/Example/E05_pit_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_ips200.c b/Example/E05_pit_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_ips200.h b/Example/E05_pit_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_oled.c b/Example/E05_pit_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_oled.h b/Example/E05_pit_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_tft180.c b/Example/E05_pit_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_tft180.h b/Example/E05_pit_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E05_pit_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E05_pit_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E05_pit_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E05_pit_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E05_pit_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E06_exit_demo/.settings/org.eclipse.core.resources.prefs b/Example/E06_exit_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E06_exit_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E06_exit_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E06_exit_demo/libraries/doc/version.txt b/Example/E06_exit_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E06_exit_demo/libraries/doc/version.txt +++ b/Example/E06_exit_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E06_exit_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E06_exit_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E06_exit_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E06_exit_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E06_exit_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_ips114.c b/Example/E06_exit_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_ips114.h b/Example/E06_exit_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_ips200.c b/Example/E06_exit_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_ips200.h b/Example/E06_exit_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_oled.c b/Example/E06_exit_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_oled.h b/Example/E06_exit_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_tft180.c b/Example/E06_exit_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_tft180.h b/Example/E06_exit_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E06_exit_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E06_exit_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E06_exit_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E06_exit_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E06_exit_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E07_encoder_demo/.settings/org.eclipse.core.resources.prefs b/Example/E07_encoder_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E07_encoder_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E07_encoder_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E07_encoder_demo/libraries/doc/version.txt b/Example/E07_encoder_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E07_encoder_demo/libraries/doc/version.txt +++ b/Example/E07_encoder_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E07_encoder_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E07_encoder_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E07_encoder_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E07_encoder_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E07_encoder_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips114.c b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips114.h b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips200.c b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips200.h b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_oled.c b/Example/E07_encoder_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_oled.h b/Example/E07_encoder_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_tft180.c b/Example/E07_encoder_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_tft180.h b/Example/E07_encoder_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E07_encoder_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E07_encoder_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E07_encoder_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E07_encoder_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E07_encoder_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E08_eeprom_demo/.settings/org.eclipse.core.resources.prefs b/Example/E08_eeprom_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E08_eeprom_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E08_eeprom_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E08_eeprom_demo/libraries/doc/version.txt b/Example/E08_eeprom_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E08_eeprom_demo/libraries/doc/version.txt +++ b/Example/E08_eeprom_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E08_eeprom_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E08_eeprom_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E08_eeprom_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E08_eeprom_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips114.c b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips114.h b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips200.c b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips200.h b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_oled.c b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_oled.h b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_tft180.c b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_tft180.h b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E08_eeprom_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E08_eeprom_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E09_timer_demo/.settings/org.eclipse.core.resources.prefs b/Example/E09_timer_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E09_timer_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E09_timer_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E09_timer_demo/libraries/doc/version.txt b/Example/E09_timer_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E09_timer_demo/libraries/doc/version.txt +++ b/Example/E09_timer_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E09_timer_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E09_timer_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E09_timer_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E09_timer_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E09_timer_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_ips114.c b/Example/E09_timer_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_ips114.h b/Example/E09_timer_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_ips200.c b/Example/E09_timer_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_ips200.h b/Example/E09_timer_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_oled.c b/Example/E09_timer_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_oled.h b/Example/E09_timer_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_tft180.c b/Example/E09_timer_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_tft180.h b/Example/E09_timer_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E09_timer_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E09_timer_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E09_timer_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E09_timer_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E09_timer_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E10_printf_debug_log_demo/.settings/org.eclipse.core.resources.prefs b/Example/E10_printf_debug_log_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E10_printf_debug_log_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E10_printf_debug_log_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E10_printf_debug_log_demo/libraries/doc/version.txt b/Example/E10_printf_debug_log_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E10_printf_debug_log_demo/libraries/doc/version.txt +++ b/Example/E10_printf_debug_log_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E10_printf_debug_log_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E10_printf_debug_log_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E10_printf_debug_log_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E10_printf_debug_log_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips114.c b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips114.h b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips200.c b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips200.h b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_oled.c b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_oled.h b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_tft180.c b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_tft180.h b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E10_printf_debug_log_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E11_interrupt_priority_set_demo/.settings/org.eclipse.core.resources.prefs b/Example/E11_interrupt_priority_set_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E11_interrupt_priority_set_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E11_interrupt_priority_set_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E11_interrupt_priority_set_demo/libraries/doc/version.txt b/Example/E11_interrupt_priority_set_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/doc/version.txt +++ b/Example/E11_interrupt_priority_set_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E11_interrupt_priority_set_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E11_interrupt_priority_set_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E11_interrupt_priority_set_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips114.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips114.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips200.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips200.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_oled.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_oled.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_tft180.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_tft180.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E11_interrupt_priority_set_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E12_cpu1_handles_interrupts_demo/.settings/org.eclipse.core.resources.prefs b/Example/E12_cpu1_handles_interrupts_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E12_cpu1_handles_interrupts_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/doc/version.txt b/Example/E12_cpu1_handles_interrupts_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/doc/version.txt +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips114.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips114.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips200.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips200.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_oled.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_oled.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_tft180.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_tft180.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E12_cpu1_handles_interrupts_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E13_dual_core_demo/.settings/org.eclipse.core.resources.prefs b/Example/E13_dual_core_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E13_dual_core_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E13_dual_core_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E13_dual_core_demo/libraries/doc/version.txt b/Example/E13_dual_core_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E13_dual_core_demo/libraries/doc/version.txt +++ b/Example/E13_dual_core_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E13_dual_core_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E13_dual_core_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E13_dual_core_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E13_dual_core_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips114.c b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips114.h b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips200.c b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips200.h b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_oled.c b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_oled.h b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_tft180.c b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_tft180.h b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E13_dual_core_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E13_dual_core_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E14_specifies_variable_or_code_location_demo/.settings/org.eclipse.core.resources.prefs b/Example/E14_specifies_variable_or_code_location_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E14_specifies_variable_or_code_location_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/doc/version.txt b/Example/E14_specifies_variable_or_code_location_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/doc/version.txt +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips114.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips114.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips200.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips200.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_oled.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_oled.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_tft180.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_tft180.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E14_specifies_variable_or_code_location_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Example/E15_fft_demo/.settings/org.eclipse.core.resources.prefs b/Example/E15_fft_demo/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Example/E15_fft_demo/.settings/org.eclipse.core.resources.prefs +++ b/Example/E15_fft_demo/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Example/E15_fft_demo/libraries/doc/version.txt b/Example/E15_fft_demo/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Example/E15_fft_demo/libraries/doc/version.txt +++ b/Example/E15_fft_demo/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Example/E15_fft_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Example/E15_fft_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Example/E15_fft_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Example/E15_fft_demo/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_imu660ra.c b/Example/E15_fft_demo/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_imu660ra.c +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_ips114.c b/Example/E15_fft_demo/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_ips114.c +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_ips114.h b/Example/E15_fft_demo/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_ips114.h +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_ips200.c b/Example/E15_fft_demo/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_ips200.c +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_ips200.h b/Example/E15_fft_demo/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_ips200.h +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_oled.c b/Example/E15_fft_demo/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_oled.c +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_oled.h b/Example/E15_fft_demo/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_oled.h +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_tft180.c b/Example/E15_fft_demo/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_tft180.c +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_tft180.h b/Example/E15_fft_demo/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_tft180.h +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_wifi_uart.c b/Example/E15_fft_demo/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_wifi_uart.c +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Example/E15_fft_demo/libraries/zf_device/zf_device_wifi_uart.h b/Example/E15_fft_demo/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Example/E15_fft_demo/libraries/zf_device/zf_device_wifi_uart.h +++ b/Example/E15_fft_demo/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数 diff --git a/Seekfree_TC264_Opensource_Library/.settings/org.eclipse.core.resources.prefs b/Seekfree_TC264_Opensource_Library/.settings/org.eclipse.core.resources.prefs index b3c7fde..bb29a1d 100644 --- a/Seekfree_TC264_Opensource_Library/.settings/org.eclipse.core.resources.prefs +++ b/Seekfree_TC264_Opensource_Library/.settings/org.eclipse.core.resources.prefs @@ -1 +1,2 @@ eclipse.preferences.version=1 +encoding/=GBK diff --git a/Seekfree_TC264_Opensource_Library/libraries/doc/version.txt b/Seekfree_TC264_Opensource_Library/libraries/doc/version.txt index b338699..832eba9 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/doc/version.txt +++ b/Seekfree_TC264_Opensource_Library/libraries/doc/version.txt @@ -1,3 +1,7 @@ +V3.1.9 + 修复单片机可能启动失败的问题 + 修复核心板ESR1引脚可能触发复位的问题 + 修改屏幕显示浮点数的数据类型为double V3.1.8 修复多个SPI同时使用可能产生冲突的问题 修复多核初始化时卡死在等待同步函数的问题 diff --git a/Seekfree_TC264_Opensource_Library/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c b/Seekfree_TC264_Opensource_Library/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c index c6d0158..c88b523 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c +++ b/Seekfree_TC264_Opensource_Library/libraries/infineon_libraries/iLLD/TC26B/Tricore/Cpu/CStart/IfxCpu_CStart0.c @@ -109,6 +109,8 @@ void _Core0_start(void) uint32 pcxi; uint16 cpuWdtPassword = IfxScuWdt_getCpuWatchdogPasswordInline(&MODULE_SCU.WDTCPU[0]); + + IFX_CFG_CPU_CSTART_PRE_C_INIT_HOOK(0); /*Test Stack, CSA and Cache */ /* Load user stack pointer */ @@ -153,7 +155,6 @@ void _Core0_start(void) /* Setup the context save area linked list. */ IfxCpu_initCSA((uint32 *)__CSA(0), (uint32 *)__CSA_END(0)); /*Initialize the context save area for CPU0 */ - { /*CPU and safety watchdogs are enabled by default, C initialization functions are not servicing the watchdogs */ uint16 safetyWdtPassword = IfxScuWdt_getSafetyWatchdogPassword(); @@ -161,11 +162,15 @@ void _Core0_start(void) IfxScuWdt_disableSafetyWatchdog(safetyWdtPassword); Ifx_C_Init(); /*Initialization of C runtime variables */ - - IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); - IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); +// IfxScuWdt_enableCpuWatchdog(cpuWdtPassword); +// IfxScuWdt_enableSafetyWatchdog(safetyWdtPassword); } + uint16 password; + password = IfxScuWdt_getSafetyWatchdogPassword(); + IfxScuWdt_clearSafetyEndinitInline(password); + MODULE_SCU.RSTCON.U = 0; + /*Initialize the clock system */ IFXCPU_CSTART_CCU_INIT_HOOK(); diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_imu660ra.c b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_imu660ra.c index 169d093..4661c0a 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_imu660ra.c +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_imu660ra.c @@ -237,7 +237,7 @@ uint8 imu660ra_init (void) imu660ra_write_registers(IMU660RA_INIT_DATA, imu660ra_config_file, sizeof(imu660ra_config_file)); // 输出配置文件 imu660ra_write_register(IMU660RA_INIT_CTRL, 0x01); // 初始化配置结束 system_delay_ms(20); - if(0 == imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 + if(1 != imu660ra_read_register(IMU660RA_INT_STA)) // 检查是否配置完成 { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么就是 imu660ra 配置初始化文件出错了 diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips114.c b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips114.c index 68bc09d..b3851cd 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips114.c +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips114.c @@ -593,7 +593,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 函数简介 IPS114 显示浮点数 (去除整数部分无效的0) // 参数说明 x 坐标x方向的起点 参数范围 [0, ips114_x_max-1] // 参数说明 y 坐标y方向的起点 参数范围 [0, ips114_y_max-1] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -603,7 +603,7 @@ void ips114_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips114_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -614,8 +614,8 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -626,7 +626,7 @@ void ips114_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips114_show_string(x, y, data_buffer); } diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips114.h b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips114.h index c897e5d..2f3c8ab 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips114.h +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips114.h @@ -120,7 +120,7 @@ void ips114_show_char (uint16 x, uint16 y, const char dat); void ips114_show_string (uint16 x, uint16 y, const char dat[]); // IPS114 显示字符串 void ips114_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // IPS114 显示32位有符号 (去除整数部分无效的0) void ips114_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // IPS114 显示32位无符号 (去除整数部分无效的0) -void ips114_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS114 显示浮点数 (去除整数部分无效的0) +void ips114_show_float (uint16 x,uint16 y, const double dat, uint8 num, uint8 pointnum); void ips114_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS114 显示二值图像 数据每八个点组成一个字节数据 void ips114_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS114 显示 8bit 灰度图像 带二值化阈值 diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips200.c b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips200.c index ba51064..b79fabf 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips200.c +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips200.c @@ -681,7 +681,7 @@ 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] -// 参数说明 dat 需要显示的变量 数据类型 float +// 参数说明 dat 需要显示的变量 数据类型 double // 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void @@ -691,7 +691,7 @@ void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 //------------------------------------------------------------------------------------------------------------------- -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -702,8 +702,8 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num+pointnum+2); @@ -714,7 +714,7 @@ void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); ips200_show_string(x, y, data_buffer); } diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips200.h b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips200.h index 176236e..c27b776 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips200.h +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_ips200.h @@ -169,11 +169,11 @@ void ips200_set_color (const uint16 pen, const uint16 bgcolor) void ips200_draw_point (uint16 x, uint16 y, const uint16 color); // IPS200 画点函数 void ips200_draw_line (uint16 x_start, uint16 y_start, uint16 x_end, uint16 y_end, const uint16 color); // IPS200 画线函数 -void ips200_show_char (uint16 x, uint16 y, const char dat); // IPS200 显示字符 -void ips200_show_string (uint16 x, uint16 y, const char dat[]); // IPS200 显示字符串 -void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // IPS200 显示32位有符号 (去除整数部分无效的0) -void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // IPS200 显示32位无符号 (去除整数部分无效的0) -void ips200_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // IPS200 显示浮点数 (去除整数部分无效的0) +void ips200_show_char (uint16 x, uint16 y, const char dat); +void ips200_show_string (uint16 x, uint16 y, const char dat[]); +void ips200_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); +void ips200_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); +void ips200_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void ips200_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // IPS200 显示二值图像 数据每八个点组成一个字节数据 void ips200_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // IPS200 显示 8bit 灰度图像 带二值化阈值 diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_oled.c b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_oled.c index 64739fe..1e15fe7 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_oled.c +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_oled.c @@ -265,16 +265,17 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); + zf_assert(128 > x); + zf_assert(8 > y); OLED_CS(0); uint8 c = 0, i = 0, j = 0; - while (ch[j] != '\0') + while ('\0' != ch[j]) { switch(oled_display_font) { case OLED_6X8_FONT: + { c = ch[j] - 32; if(x > 126) { @@ -282,14 +283,15 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 6; i ++) + for(i = 0; 6 > i; i ++) { oled_write_data(ascii_font_6x8[c][i]); } x += 6; j ++; - break; + }break; case OLED_8X16_FONT: + { c = ch[j] - 32; if(x > 120) { @@ -297,22 +299,23 @@ void oled_show_string (uint16 x, uint16 y, const char ch[]) y ++; } oled_set_coordinate((uint8)x, (uint8)y); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i]); } oled_set_coordinate((uint8)x, (uint8)(y + 1)); - for(i = 0; i < 8; i ++) + for(i = 0; 8 > i; i ++) { oled_write_data(ascii_font_8x16[c][i + 8]); } x += 8; j ++; - break; + }break; case OLED_16X16_FONT: + { // 暂不支持 - break; + }break; } } OLED_CS(1); @@ -386,6 +389,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) memset(data_buffer, 0, 12); memset(data_buffer, ' ', num); + // 用来计算余数显示 123 显示 2 位则应该显示 23 if(10 > num) { for(; 0 < num; num --) @@ -402,8 +406,8 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 函数简介 OLED 显示浮点数 (去除整数部分无效的0) // 参数说明 x x 轴坐标设置 0-127 // 参数说明 y y 轴坐标设置 0-7 -// 参数说明 dat 需要显示的变量,数据类型float或double -// 参数说明 num 整数位显示长度 最高8位 +// 参数说明 dat 需要显示的变量 数据类型 double +// 参数说明 num 整数位显示长度 最高8位 // 参数说明 pointnum 小数位显示长度 最高6位 // 返回参数 void // 使用示例 oled_show_float(0, 0, x, 2, 3); // 显示浮点数 整数显示2位 小数显示三位 @@ -412,7 +416,7 @@ void oled_show_uint (uint16 x,uint16 y,const uint32 dat,uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum) +void oled_show_float (uint16 x,uint16 y,const double dat,uint8 num,uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -425,8 +429,8 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); @@ -437,7 +441,7 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum offset *= 10; } dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; - func_float_to_str(data_buffer, dat_temp, pointnum); + func_double_to_str(data_buffer, dat_temp, pointnum); oled_show_string(x, y, data_buffer); } @@ -452,7 +456,10 @@ void oled_show_float (uint16 x,uint16 y,const float dat,uint8 num,uint8 pointnum // 参数说明 dis_height 图像显示高度 参数范围 [0, 64] // 返回参数 void // 使用示例 oled_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W, OV7725_H); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -531,7 +538,10 @@ void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 threshold 二值化显示阈值 0-不开启二值化 // 返回参数 void // 使用示例 oled_show_gray_image(0, 0, mt9v03x_image[0], width, height, 128, 64, x); -// 备注信息 +// 备注信息 用于显示总钻风的图像 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 +// 如果要显示二值化图像 直接修改最后一个参数为需要的二值化阈值即可 //------------------------------------------------------------------------------------------------------------------- void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold) { @@ -612,9 +622,9 @@ void oled_show_wave (uint16 x, uint16 y, const uint16 *wave, uint16 width, uint1 // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 // 检查一下你的显示调用的函数 自己计算一下哪里超过了屏幕显示范围 - zf_assert(x < 128); - zf_assert(y < 8); - zf_assert(wave != NULL); + zf_assert(128 > x); + zf_assert(8 > y); + zf_assert(NULL != wave); uint32 i = 0; uint32 width_index = 0, value_max_index = 0; diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_oled.h b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_oled.h index 78c9553..ac85c43 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_oled.h +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_oled.h @@ -112,7 +112,7 @@ void oled_draw_point (uint16 x, uint16 y, const uint8 color); void oled_show_string (uint16 x, uint16 y, const char ch[]); // OLED 显示字符串 void oled_show_int (uint16 x, uint16 y, const int32 dat, uint8 num); // OLED 显示32位有符号 (去除整数部分无效的0) void oled_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num); // OLED 显示32位无符号 (去除整数部分无效的0) -void oled_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum); // OLED 显示浮点数 (去除整数部分无效的0) +void oled_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void oled_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // OLED 显示二值图像 数据每八个点组成一个字节数据 void oled_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // OLED 显示 8bit 灰度图像 带二值化阈值 diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_tft180.c b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_tft180.c index 83c5588..a044475 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_tft180.c +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_tft180.c @@ -592,7 +592,7 @@ void tft180_show_uint (uint16 x, uint16 y, const uint32 dat, uint8 num) // 有关问题的详情,请自行百度学习 浮点数精度丢失问题。 // 负数会显示一个 ‘-’号 正数显示一个空格 //------------------------------------------------------------------------------------------------------------------- -void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 pointnum) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum) { // 如果程序在输出了断言信息 并且提示出错位置在这里 // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 @@ -603,19 +603,19 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po zf_assert(0 < pointnum); zf_assert(6 >= pointnum); - float dat_temp = dat; - float offset = 1.0; + double dat_temp = dat; + double offset = 1.0; char data_buffer[17]; memset(data_buffer, 0, 17); memset(data_buffer, ' ', num + pointnum + 2); - if(num < 10) + // 用来计算余数显示 123 显示 2 位则应该显示 23 + for(; 0 < num; num --) { - for(; num > 0; num--) - offset *= 10; - dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + offset *= 10; } - func_float_to_str(data_buffer, dat_temp, pointnum); + dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset; + func_double_to_str(data_buffer, dat_temp, pointnum); tft180_show_string(x, y, data_buffer); } @@ -630,7 +630,10 @@ void tft180_show_float (uint16 x, uint16 y, const float dat, uint8 num, uint8 po // 参数说明 dis_height 图像显示高度 参数范围 [0, tft180_y_max] // 返回参数 void // 使用示例 tft180_show_binary_image(0, 0, ov7725_image_binary[0], OV7725_W, OV7725_H, OV7725_W / 2, OV7725_H / 2); -// 备注信息 +// 备注信息 用于显示小钻风的未解压的压缩二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 +// 这个函数不可以用来直接显示总钻风的未压缩的二值化图像 //------------------------------------------------------------------------------------------------------------------- void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height) { @@ -638,7 +641,7 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi // 那么一般是屏幕显示的时候超过屏幕分辨率范围了 zf_assert(x < tft180_x_max); zf_assert(y < tft180_y_max); - zf_assert(image != NULL); + zf_assert(NULL != image); uint32 i = 0, j = 0; uint8 temp = 0; @@ -655,9 +658,13 @@ void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 wi width_index = i * width / dis_width; temp = *(image + height_index * width / 8 + width_index / 8); // 读取像素点 if(0x80 & (temp << (width_index % 8))) + { tft180_write_16bit_data(RGB565_WHITE); + } else + { tft180_write_16bit_data(RGB565_BLACK); + } } } TFT180_CS(1); @@ -734,7 +741,10 @@ void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 widt // 参数说明 color_mode 色彩模式 0-低位在前 1-高位在前 // 返回参数 void // 使用示例 tft180_show_rgb565_image(0, 0, scc8660_image[0], SCC8660_W, SCC8660_H, SCC8660_W / 2, SCC8660_H / 2, 1); -// 备注信息 +// 备注信息 用于显示凌瞳的 RGB565 的图像 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 +// 如果要显示低位在前的其他 RGB565 图像 修改最后一个参数即可 //------------------------------------------------------------------------------------------------------------------- void tft180_show_rgb565_image (uint16 x, uint16 y, const uint16 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 color_mode) { diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_tft180.h b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_tft180.h index f9d98c7..5b3fd52 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_tft180.h +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_tft180.h @@ -120,7 +120,7 @@ void tft180_show_char (uint16 x, uint16 y, const char dat); void tft180_show_string (uint16 x, uint16 y, const char dat[]); // TFT180 显示字符串 void tft180_show_int (uint16 x,uint16 y, const int32 dat, uint8 num); // TFT180 显示32位有符号 (去除整数部分无效的0) void tft180_show_uint (uint16 x,uint16 y, const uint32 dat, uint8 num); // TFT180 显示32位无符号 (去除整数部分无效的0) -void tft180_show_float (uint16 x,uint16 y, const float dat, uint8 num, uint8 pointnum); // TFT180 显示浮点数 (去除整数部分无效的0) +void tft180_show_float (uint16 x, uint16 y, const double dat, uint8 num, uint8 pointnum); void tft180_show_binary_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height); // TFT180 显示二值图像 数据每八个点组成一个字节数据 void tft180_show_gray_image (uint16 x, uint16 y, const uint8 *image, uint16 width, uint16 height, uint16 dis_width, uint16 dis_height, uint8 threshold); // TFT180 显示 8bit 灰度图像 带二值化阈值 diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_wifi_uart.c b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_wifi_uart.c index 25fafce..10b5b94 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_wifi_uart.c +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_wifi_uart.c @@ -950,7 +950,7 @@ uint8 wifi_uart_tcp_servers_check_link (void) // 使用示例 wifi_uart_send_buffer("123", 3); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len) { zf_assert(NULL != buff); int32 timeout = WAIT_TIME_OUT; @@ -1018,7 +1018,7 @@ uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len) // 使用示例 wifi_uart_tcp_servers_send_buffer("123", 3, WIFI_UART_LINK_0); // 备注信息 当模块作为TCP服务器时,发送数据函数默认将数据发送至第一个连接模块的客户端 //------------------------------------------------------------------------------------------------------------------- -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id) +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id) { zf_assert(NULL != buff); char lenth[32] = {0}; @@ -1067,12 +1067,12 @@ uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_lin // 使用示例 uint8 test_buffer[256]; wifi_uart_read_buffer(&test_buffer[0], sizeof(test_buffer)); // 备注信息 //------------------------------------------------------------------------------------------------------------------- -uint16 wifi_uart_read_buffer (uint8 *buffer, uint16 len) +uint32 wifi_uart_read_buffer (uint8 *buffer, uint32 len) { zf_assert(NULL != buffer); uint32 read_len = len; fifo_read_buffer(&wifi_uart_fifo, buffer, &read_len, FIFO_READ_AND_CLEAN); - return (uint16)read_len; + return read_len; } //-------------------------------------------------------------------------------------------------- diff --git a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_wifi_uart.h b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_wifi_uart.h index 5ef5eda..6be4bf5 100644 --- a/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_wifi_uart.h +++ b/Seekfree_TC264_Opensource_Library/libraries/zf_device/zf_device_wifi_uart.h @@ -148,9 +148,9 @@ uint8 wifi_uart_entry_tcp_servers (char *port); uint8 wifi_uart_exit_tcp_servers (void); // 关闭 TCP 服务器 uint8 wifi_uart_tcp_servers_check_link (void); // TCP Server 模式下检查当前链接数量 并获取 IP -uint32 wifi_uart_send_buffer (uint8 *buff, uint32 len); // WIFI 模块数据发送函数 -uint32 wifi_uart_tcp_servers_send_buffer (uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 -uint16 wifi_uart_read_buffer (uint8 *buff, uint16 len); // WIFI 模块数据接收函数 +uint32 wifi_uart_send_buffer (const uint8 *buff, uint32 len); // WIFI 模块数据发送函数 +uint32 wifi_uart_tcp_servers_send_buffer (const uint8 *buff, uint32 len, wifi_uart_link_id_enum id); // WIFI 模块作为 TCP Server 指定目标设备发送函数 +uint32 wifi_uart_read_buffer (uint8 *buff, uint32 len); // WIFI 模块数据接收函数 void wifi_uart_callback (void); // WIFI 模块串口回调函数 uint8 wifi_uart_init (char *wifi_ssid, char *pass_word, wifi_uart_mode_enum wifi_mode); // WIFI 模块初始化函数