历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2019年10月15日 | 基于STM32的pwmRGB调色程序

发布者:czm721002 来源: eefocus关键字:STM32  pwm  RGB调色 手机看文章 扫描二维码
随时随地手机看文章

#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);

}


关键字:STM32  pwm  RGB调色 引用地址:基于STM32的pwmRGB调色程序

上一篇:STM32F103超极精简的OS
下一篇:STM32F103ZET6任意频率正弦波+三角波工程源码

推荐阅读

近期,全球照明与科技领导者欧司朗和日本小糸公司宣布将发布一系列标准化LED信号灯。此系列信号灯产品基于原有的系列可交换LED信号灯(XLS) 产品进行开发,符合 UN/ECE (R128)标准。通过此系列LED信号灯,安装在车辆上的所有重要信号灯应用可以通过一个拥有三种不同灯光版本的统一平台进行管理,实现了行业内新的突破。此项创新技术可以实现零部件的...
//***********************************************************************// 包含文件//***********************************************************************#include <string.h>#include <stdio.h>#define F_CPU 16000000 // 单片机主频为16MHz,用于延时...
NEC日前选择NXP作为供应商,为日本移动网络运营商之一的乐天移动mMIMO 5G天线无线电单元提供射频空中广播多芯片模块(MCM)。mMIMO-RU将使用NXP的AFSC5G40E38 MCM,一种LDMOS功率晶体管的全集成Doherty功率放大器。它是为满足日本5G基础设施部署的频率和功率要求而开发的,在3.7至4.0GHz频段内,其平均功率为6.3W,增益为27dB,MCM的尺寸是10mm*6mm。AFS...
据中国台湾地区IC和元件分销商的消息人士称,尽管需求前景不明朗,但芯片制造商的库存不均衡在第四季度仍将存在。图源:digitimesdigitimes报道指出,消息人士称,第四季度的整体需求前景在10月底之前不太可能明朗。消息人士指出,汽车和工业芯片的供应仍然紧张,而服务器和基站应用的芯片需求继续稳定增长。不过对入门级和中端笔记本电脑、其他个人电脑及...

史海拾趣

问答坊 | AI 解惑

Endpoint Block Plus for PCI Express® 用户指南

《Endpoint Block Plus for PCI Express&reg; 用户指南》讲述 Endpoint Block Plus for PCI Express (PCIe&reg;) 核的功能和操作,包括如何设计、定制和实现核。 现在这个技术已经开始广泛应用了,对高端用户蛮有用的…

查看全部问答∨

问题 : Win CE 5.0 使用 IImage 接口实现 图片浏览 急 多谢

使用IImage将图片Draw()在一个Static 框上 无法刷新 即上一次画的内容在画另一幅图片时仍存在 不知怎样消除 若用FillRect 将static框画黑 明显看到闪烁 不知描述的是否清楚 多谢了各位 或其他实现图片浏览的方法 wince 5.0 再次感谢…

查看全部问答∨

请教高手一个文件传输问题,高手请指点啊!

在VC里借鉴了个网友做的服务器和客户端程序,想把客户端移植到EVC下面,出现了编译错误,请高手指点怎么改?? vc下的客户端程序部分代码是: [code] DWORD WINAPI CClientDlg::SocketSend(LPVOID lpParameter) {         ...…

查看全部问答∨

想问一句咱们datasheet的PDF是都加了权限的吗?

想问一句咱们datasheet的PDF是都加了权限的吗? 建议把权限去掉这样好往文档里面复制 呵呵…

查看全部问答∨

万利的STM32F107开发板什么时间在国内市场能买到呀

                                 大牛们,谁知道万利的STM32F107开发板什么时间在国内市场能买到呀,香水主出来说下行吗?…

查看全部问答∨

,我有些不理解.

关于 你们的声明,我有些不理解.例如:我采用芯片经常看一些demo,而且线路也和demo一样.难道说,只允许我买片子,具体电路还要自己重新设计吗,不允许使用demo线路吗,这样的话,我买片子还干吗用,demo就是为了让使用者尽快熟悉该芯片的使用等,我不明白,如 ...…

查看全部问答∨

我彻底晕了,搞了一天,还是没有解决!天啊,问题到底出在哪里?

程序编好了,各种功能都很正常,用的是135,可是今天领导说让在程序初始化的地方先让P5.3=1,P5.0=0,然后经过一段延时在另P5.3=0;P5.0=1;看似很简单,可是当我这样改了之后问题却出来了,程序运行到P5.3=0;P5.0=1;指令后就复位,一直重复不断,我不知道问题 ...…

查看全部问答∨

点阵光标怎么实现?

我用三星的160s321a1型号的屏,想出光标,可是弄了好几天了,现在光标出来了,就是没有地址不知道该如何去显示?…

查看全部问答∨

请问modelsim SE6.5打开为什么这么慢

装的是ISE10.1+ modelsim SE6.5  装上之后编译xilinx库文件之后  再在ISE下调用modelsim就特别慢  单独打开modelsim 6.5时也特别慢  机器配置绝对没问题,顶级的,也没开任何其他大程序。  怀疑是加载了什么不需要的东东 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved