#include "LIGHT/Light.h"
#include "DELAY/Delay.h"
#include "TIMx/TIMx.h"
u16 RGB_buffer[69] = {0};
/**
* 功能:初始灯光
* 参数:
* brightness:初始化亮度 10-100
* colortemp:初始化色温 0-100
* red:RGB红色比例 0-255
* green:RGB绿色比例 0-255
* blue:RGB蓝色比例 0-255
* 返回值:None
*/
void initLight(u8 brightness,u8 colortemp,u8 red,u8 green,u8 blue)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁止JTAG保留SWD
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE); //设置JTAG为定时器2部分映射,只使用SWD模式
/*设置冷光灯*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*设置暖光灯*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*设置RGB*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
setLight(brightness,colortemp);
setRGB(red,green,blue);
}
/**
* 功能:设置灯光亮度和色温
* 参数:
* brightness:亮度 10-100
* colortemp:色温 0-100
* 返回值:None
*/
void setLight(u8 brightness,u8 colortemp)
{
/**
* 无论是亮度还是色温,最终都体现在LED的亮度上
* LED最终的亮度计算公式为:满占空比(重装载值) * 亮度百分比 * 色温百分比
* 并且要保证冷光和暖光的色温比值之和为100%
* */
TIM_SetCompare1(TIM2,getPeriod(TIM2)*brightness/100*colortemp/100); //设置冷光 对应PA15 TIM2_CH1
TIM_SetCompare2(TIM2,getPeriod(TIM2)*brightness/100*(100-colortemp)/100); //设置暖光 对应PB3 TIM2_CH2
}
/**
* 功能:设置RGB颜色
* 参数:
* red:RGB红色比例 0-255
* green:RGB绿色比例 0-255
* blue:RGB蓝色比例 0-255
* 返回值:None
*/
void setRGB(u8 red,u8 green,u8 blue)
{
u8 i = 0;
u32 rgb_value = green<<16 | red<<8 | blue;
while(DMA_GetFlagStatus(DMA1_FLAG_TC1)==RESET);
DMA_ClearFlag(DMA1_FLAG_TC1);
DMA_Cmd(DMA1_Channel1, DISABLE);
DMA_SetCurrDataCounter(DMA1_Channel1,sizeof(RGB_buffer));
for(i=0;i<24;++i)
{
if((rgb_value< {
RGB_buffer[i+45] = 61; //68%占空比
}else
{
RGB_buffer[i+45] = 28; //32%占空比
}
}
DMA_Cmd(DMA1_Channel1, ENABLE);
}
上一篇:STM32F103超极精简的OS
下一篇:STM32F103ZET6任意频率正弦波+三角波工程源码
推荐阅读
史海拾趣
统宇电研深知品质对于企业的重要性,因此一直将品质管理作为公司的核心竞争力之一。公司建立了严格的品质管理体系,从原材料采购到产品出厂的每一个环节都进行严格把关。同时,统宇电研还注重员工品质意识的培养和提高,通过培训和实践相结合的方式不断提升员工的品质素养。这些努力使得统宇电研的产品品质得到了客户的广泛认可。
在追求经济效益的同时,Deltron公司始终关注环境保护和可持续发展。公司大力推行绿色生产理念,引进环保设备和技术,减少生产过程中的污染物排放。同时,公司还积极参与环保公益活动,提高员工和公众的环保意识。这些举措不仅提升了Deltron的品牌形象,也为公司的长期发展奠定了坚实基础。
随着产品线的不断扩张,ELM开始积极拓展市场,寻求更广阔的发展空间。公司制定了国际化战略,通过参加国际展会、建立海外销售渠道等方式,成功将产品打入国际市场。同时,ELM还积极与国际知名电子企业开展合作,共同研发新产品、开拓新市场。这些举措不仅为ELM带来了更多的商业机会,也提升了公司的国际影响力。
在稳固国内市场的同时,福声科技积极寻求国际合作机会,努力拓展海外市场。公司凭借其优质的产品和服务,成功吸引了日本、韩国、加拿大、美国等多个国家和地区的客户。通过与国际知名企业的合作与交流,福声科技不仅提升了自身的技术水平和品牌影响力,还进一步拓宽了国际市场渠道,为公司的全球化战略奠定了坚实基础。
CLC起源于一个对高质量手工皮革制品有着无限热情的小型工坊。创始人是一位经验丰富的皮革工匠,他看到了电子工程师和户外工作者对耐用、实用的工具包的需求。于是,他开始了自己的创业之路,以“定制皮革工艺”为核心理念,承诺每一件产品都经过精心制作和严格质检。凭借这份承诺和精湛的技艺,CLC逐渐在市场中赢得了口碑。
1995年,皮埃尔·奥米迪亚(Pierre Omidyar)以AuctionWeb的名字推出了eBay,最初只是一个在线拍卖个人物品的平台。随着互联网的普及和用户对在线交易需求的增长,eBay迅速吸引了大量用户。其独特的商业模式和用户友好的界面使eBay成为在线拍卖市场的领军者。1998年,eBay成功上市,成为当时最成功的互联网公司之一。
Endpoint Block Plus for PCI Express® 用户指南 《Endpoint Block Plus for PCI Express® 用户指南》讲述 Endpoint Block Plus for PCI Express (PCIe®) 核的功能和操作,包括如何设计、定制和实现核。 现在这个技术已经开始广泛应用了,对高端用户蛮有用的… 查看全部问答∨ |
|
问题 : Win CE 5.0 使用 IImage 接口实现 图片浏览 急 多谢 使用IImage将图片Draw()在一个Static 框上 无法刷新 即上一次画的内容在画另一幅图片时仍存在 不知怎样消除 若用FillRect 将static框画黑 明显看到闪烁 不知描述的是否清楚 多谢了各位 或其他实现图片浏览的方法 wince 5.0 再次感谢… 查看全部问答∨ |
在VC里借鉴了个网友做的服务器和客户端程序,想把客户端移植到EVC下面,出现了编译错误,请高手指点怎么改?? vc下的客户端程序部分代码是: [code] DWORD WINAPI CClientDlg::SocketSend(LPVOID lpParameter) { ...… 查看全部问答∨ |
我彻底晕了,搞了一天,还是没有解决!天啊,问题到底出在哪里? 程序编好了,各种功能都很正常,用的是135,可是今天领导说让在程序初始化的地方先让P5.3=1,P5.0=0,然后经过一段延时在另P5.3=0;P5.0=1;看似很简单,可是当我这样改了之后问题却出来了,程序运行到P5.3=0;P5.0=1;指令后就复位,一直重复不断,我不知道问题 ...… 查看全部问答∨ |
|
装的是ISE10.1+ modelsim SE6.5 装上之后编译xilinx库文件之后 再在ISE下调用modelsim就特别慢 单独打开modelsim 6.5时也特别慢 机器配置绝对没问题,顶级的,也没开任何其他大程序。 怀疑是加载了什么不需要的东东 ...… 查看全部问答∨ |