#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP == 0 /*Pixel format: Red: 5 bit, Green: 6 bit, Blue: 5 bit*/
时间: 2024-03-31 12:39:00 浏览: 309
这段代码是一个条件编译指令,用于根据 LVGL 图形库的配置选择不同的像素格式。具体来说,它判断 LV_COLOR_DEPTH 变量的值是否为 16,且 LV_COLOR_16_SWAP 变量的值是否为 0。如果两个条件都满足,就说明 LVGL 图形库使用了 16 位色深的像素格式,并且颜色通道的顺序没有交换。
在这种像素格式下,每个像素占据 16 位(2 字节),红色通道占据 5 位,绿色通道占据 6 位,蓝色通道占据 5 位。这样的分配方式可以表示 2^5 = 32 种不同的红色亮度级别,2^6 = 64 种不同的绿色亮度级别,以及 2^5 = 32 种不同的蓝色亮度级别。总共可以表示 32*64*32 = 65536 种不同的颜色,这是一种较高的色彩深度。
相关问题
l01_0 = l11_0 = l21_0 = 127; l02_0 = l12_0 = l22_0 = 127; minmax_0 = l02_0; maxmin_0 = l22_0; for (i = 0; i < cols; i++) { l00_0 = *line0++; l10_0 = *line1++; l20_0 = *line2++; // sort l00_0, l10_0, l20_0 l20_1 = l20_0; l10_1 = l10_0; if (l20_0 > l10_0) { l10_1 = l20_0; l20_1 = l10_0; } // swap l00_1 = l00_0; l10_2 = l10_1; if (l10_1 > l00_0) { l00_1 = l10_1; l10_2 = l00_0; } // swap l20_2 = l20_1; l10_3 = l10_2; if (l20_1 > l10_2) { l10_3 = l20_1; l20_2 = l10_2; } // swap if (l01_0 < minmax_0) minmax_0 = l01_0; /* Compute min of max */ if (l00_1 < minmax_0) minmax_0 = l00_1; if (l21_0 > maxmin_0) maxmin_0 = l21_0; /* Comput max of min */ if (l20_2 > maxmin_0) maxmin_0 = l20_2; // sort l10 l11 l12 t0_1 = l10_3; /* Compute median of median */ t1_1 = l11_0; if (l10_3 > l11_0) { t0_1 = l11_0; t1_1 = l10_3; } t1_2 = t1_1; if (t1_1 > l12_0) { t1_2 = l12_0; } medmed_0 = t1_2; if (t0_1 > t1_2) { medmed_0 = t0_1; } // swap // minmax, medmed, maxmin medmed_1 = medmed_0; minmax_1 = minmax_0; if (minmax_0 > medmed_0) { medmed_1 = minmax_0; minmax_1 = medmed_0; } medmed_2 = medmed_1; if (medmed_1 > maxmin_0) { medmed_2 = maxmin_0; } medmed_3 = medmed_2; if (minmax_1 > medmed_2) { medmed_3 = minmax_1; } /* Move data along by one column */ minmax_0 = l01_0; l12_0 = l11_0; maxmin_0 = l21_0; l01_0 = l00_1; l11_0 = l10_3; l21_0 = l20_2; *out_data++ = medmed_3; } }
这段代码是用于图像处理中的中值滤波器,它的作用是去除噪声并平滑图像。在这段代码中,它对图像的每一列进行处理,首先将当前像素点的上下三个像素点按大小排序,然后取中间值作为当前像素点的值。接着,根据当前像素点左侧的像素点和右侧的像素点的大小关系,计算出当前像素点的值与其左侧像素点和右侧像素点的最大值和最小值,最后将处理后的像素点值存储到输出数据中。
#include "lib_prot_pd.h" #include "mod_input_output.h" #include "mod_display.h" #include "mod_queue.h" #include "app_typec_deal.h" #include "app_init.h" #include "lib_multi_protocol.h" uint8_t typeca_ufp= 0; void typeca_hard_reset_cb(void) { static uint8_t b_typec_hard_reset_lock= RESET; if(h_pd.output.b_source_read_hard|| \ h_pd.output.b_sink_read_hard) { if(b_typec_hard_reset_lock== RESET) { b_typec_hard_reset_lock= SET; mod_queue_send(PLUG_CA_RST_P); } }else { if(b_typec_hard_reset_lock) { b_typec_hard_reset_lock= RESET; mod_queue_send(PLUG_CA_RST_N); } } } void typecb_hard_reset_cb(void) { static uint8_t b_typec_hard_reset_lock= RESET; if(h_pd.output.b_source_read_hard|| \ h_pd.output.b_sink_read_hard) { if(b_typec_hard_reset_lock== RESET) { b_typec_hard_reset_lock= SET; mod_queue_send(PLUG_CB_RST_P); } }else { if(b_typec_hard_reset_lock) { b_typec_hard_reset_lock= RESET; mod_queue_send(PLUG_CB_RST_N); } } } void typeca_pr_swap_cb(void) { static uint8_t b_pd_power_role_swap_lock; if(h_pd.output.b_pr_swap_en) { if(h_pd.output.b_source_read_pr_swap) { b_pd_power_role_swap_lock= SET; /*用户代码*/ //关 VBus }else if(h_pd.output.b_sink_read_pr_swap) { /*用户代码*/ //DC-DC 进入放电状态,升压,打开 VBus } }else { b_pd_power_role_swap_lock= RESET; } } void typecb_pr_swap_cb(void) { static uint8_t b_pd_power_role_swap_lock; if(h_pd.output.b_pr_swap_en) { if(h_pd.output.b_source_read_pr_swap) { b_pd_power_role_swap_lock= SET; /*用户代码*/ //关 VBus }else if(h_pd.output.b_sink_read_pr_swap) { /*用户代码*/ //DC-DC 进入放电状态,升压,打开 VBus } }else { b_pd_power_role_swap_lock= RESET; } } bool typeca_vbus_exist_cb(void) { //判断一下0.8V VBus电压 return mod_io_typeca_acin(); } bool typecb_vbus_exist_cb(void) { //判断一下0.8V VBus电压 return mod_io_typecb_acin(); } void typeca_attached_src_cb(void) { /** * !!! * 兼容性测试需要 */ mod_io_a1d_out(); mod_queue_send(PLUG_CAD_IN); } void typecb_attached_src_cb(void) { mod_io_a1d_out(); mod_queue_send(PLUG_CBD_IN); } void typeca_attached_snk_cb(void) { mod_queue_send(PLUG_CAC_IN); typeca_ufp = 1; } void typecb_attached_snk_cb(void) { mod_queue_send(PLUG_CBC_IN); typeca_ufp = 1; } void typeca_unattached_cb(void) { mod_queue_send(PLUG_CAX_OUT); typeca_ufp = 0; } void typecb_unattached_cb(void) { mod_queue_send(PLUG_CBX_OUT); }
这是一段 C 语言代码,包括了一些函数和变量的定义。其中定义了一些回调函数,如 typeca_hard_reset_cb、typecb_hard_reset_cb,用于 Type-C 接口的硬复位操作。还定义了 typeca_pr_swap_cb、typecb_pr_swap_cb,用于 Type-C 接口的 power role swap(PR_SWAP)操作。此外,还定义了一些判断 VBus 电压是否存在的函数,如 typeca_vbus_exist_cb、typecb_vbus_exist_cb,以及一些表示设备接入或断开的回调函数,如 typeca_attached_src_cb、typecb_attached_src_cb、typeca_attached_snk_cb、typecb_attached_snk_cb、typeca_unattached_cb、typecb_unattached_cb。
阅读全文