在线时间10 小时
UID3310080
ST金币31
蝴蝶豆0
注册时间2017-2-25
该用户从未签到
初级会员
- 最后登录
- 2024-4-4
|
发表于 2019-12-5 23:56:10
|
显示全部楼层
首先膜拜一下大佬,感谢大佬的分享,然后想请教一下各位,下面这段代码的实现是个啥意思啊,scale是干啥的啊?
void Sw28_SetBrightness(SW28_HandleTypeDef *swObj, uint8_t b)
{
uint8_t newBrightness = b + 1;
uint8_t oldBrightness = swObj->Brightness - 1; // De-wrap old brightness value
uint32_t c;
uint16_t scale,i;
if(newBrightness != swObj->Brightness)
{ // Compare against prior value
// Brightness has changed -- re-scale existing data in RAM
if(oldBrightness == 0)
scale = 0; // Avoid /0
else if(b == 255)
scale = 65535 / oldBrightness;
else
scale = (((uint16_t)newBrightness << 8) - 1) / oldBrightness;
for(i=0; i<swObj->PixelLen; i++)
{
c = Sw28_GetPixelColor(swObj,i); //获取16bit颜色
c = Sw28_ScaleColor(scale, c);
Sw28_SetPixelsColor(swObj,i,c);//设置颜色
}
swObj->Brightness = newBrightness;
}
}
|
|