历史上的今天
返回首页

历史上的今天

今天是:2025年04月09日(星期三)

正在发生

2019年04月09日 | STM32F103+HAL+PWM+DMA+WS2812

2019-04-09 来源:eefocus

如题:用HAL库,通过stm32f103r8的PWM的DMA模式控制WS2812


硬件使用的是TIM3的CHANNEL1硬件配置如下:



时钟为常规时钟配置



定时器3产生1.25us周期需要的arr为89(计算略)



DMA配置如下:



几个需要注意的地方,


1.DMA


  1.1DMA方向    Memory To Peripheral (默认为Peripheral  To Memory)


  1.2DMA传输位宽 Half Word


2.定义数组



2.1一定要定位为16bit,


3.定义高低位


#define BIT_1                   61u //1比较值为61 850us

#define BIT_0                   28u //0比较值为28 400us 


4. //发送函数


void TM7812_show(void)

{

    uint8_t i, j;



    for(i = 0; i < PIXEL_MAX; i++)

    {

        for(j = 0; j < 8; j++)

        {

            frame.data[24 * i + j]     = (rBuffer[i] & (0x80 >> j)) ? BIT_1 : BIT_0; //将高低位扩展到16bit

            frame.data[24 * i + j + 8]   = (gBuffer[i] & (0x80 >> j)) ? BIT_1 : BIT_0;

            frame.data[24 * i + j + 16]  = (bBuffer[i] & (0x80 >> j)) ? BIT_1 : BIT_0;



        }

    }

    HAL_TIM_PWM_Start_DMA(&htim3, TIM_CHANNEL_1, (uint32_t *)&frame, 3 + 24 * PIXEL_MAX + 1);  //虽然传的是16bit但是要先转为32bit指针,


//貌似是函数要求为32位无符号指针,但实际传输时,因为之前定义的为half word,所以还是16bit传输;


//不对还请指正


}


5.PWM的DMA完成中断回调函数


 因为HAL库自身清楚DMA标志的时候并没有停止PWM所以需要手动停止


void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)

{

    HAL_TIM_PWM_Stop(&htim3,TIM_CHANNEL_1);

}


推荐阅读

史海拾趣

HCC Industries公司的发展小趣事

2015年,HCC Industries迎来了其发展历程中的一个重要转折点。在这一年,公司成功收购了另一家具有强大研发实力和市场份额的微电子企业。此次并购不仅使HCC在技术上得到了进一步的补充和提升,还大大增强了其生产能力和市场覆盖范围。通过整合双方资源,HCC在短时间内实现了规模的快速扩张和效益的显著提升,进一步巩固了其在行业内的领先地位。

高通(GENITOP)公司的发展小趣事

1964年,超霸电池的前身——金山工业集团在中国香港地区成立,最初专注于生产9伏干电池,以满足当时收音机等电子产品的需求。这一时期的超霸电池以其稳定的质量和可靠的性能迅速在市场上站稳脚跟。随着电子产品的普及,金山工业敏锐地捕捉到市场机遇,逐步扩大生产规模,为后续的发展奠定了坚实基础。

虹冠电子(Champion)公司的发展小趣事

虹冠电子自成立以来,一直将技术创新作为公司发展的核心动力。早期,虹冠电子就投入大量资源研发AC-DC模拟电源IC,成功推出了一系列高效能、低能耗的产品,迅速在市场上建立了良好的口碑。随着技术的不断迭代,虹冠电子在电源管理技术方面取得了显著优势,尤其在电竞电源供应器领域,凭借卓越的性能和稳定性,赢得了众多专业用户和消费者的认可。

Bestar Electric公司的发展小趣事

随着全球市场的不断变化和消费者需求的多样化,Bestar Electric开始加快国际化布局。公司通过在海外设立分支机构、开展国际合作等方式,进一步拓展国际市场。同时,公司还关注未来发展趋势,积极布局新兴领域,如人工智能、5G通信等,为公司的未来发展奠定坚实基础。

这些故事只是对电子行业公司发展历程的概括性描述,并不特指Bestar Electric公司的具体经历。每个公司的发展都有其独特之处,需要具体分析和了解。

Corsair Memory Inc公司的发展小趣事

Corsair Memory Inc公司,由Don Lieberman、John Beekley与Andy Paul于1994年在美国加州佛利蒙创立。起初,公司专注于为英特尔系统生产Cache-On-A-Stick (COAST)模组。然而,随着英特尔将快取内存由主板移至处理器晶体中,Corsair迅速调整战略,将注意力转向电脑内存市场。这一转变不仅使Corsair避开了潜在的市场风险,更为其后续的内存业务奠定了坚实的基础。

达晶微(CREATEK)公司的发展小趣事

为了进一步扩大市场份额,达晶微积极拓展国际市场。公司在深圳、上海、苏州、台湾、青岛、长沙、韩国、北美等地设立了销售办事处,与当地企业建立了紧密的合作关系。同时,达晶微还积极寻求与国际知名企业的合作机会,通过引进先进技术和管理经验,不断提升自身实力。

问答坊 | AI 解惑

LM2678无法输出大电流

请教各位高手:       我按照LM2678资料上的图搭了一个电路,输入电压35V,输出电压25V,带5欧姆负载,希望输出5A电流;       芯片用的是LM2678-ADJ,输入电容是470UF的铝电解电容再并一个0.47UF的瓷介电容;R1 ...…

查看全部问答>

尽力破解高砂製作所EX系列电源设计思想(一)

针对产品:EX系列中EX-375可调开关电源 性能: 带PFC最大输出功率375W 0-60V输出可调 0-25A可调 特性:在低电压输出时能保证大电流输出,高电压时能保证小电流输出设定 可控制功率恒定 精度良好,可靠性五星 背面图 (前进后出的风道结 ...…

查看全部问答>

两块pci卡可以直接通讯吗?

我原来访问PCI卡都是直接调用板卡的驱动,我昨天听人说可以通过设置一块卡做为主控设备,其它卡为辅助设备,主控设备里如果是程序,就可以编程直接访问辅助设备的IO,而不需要计算机的干扰。 我以前还没有见过,请问这个方式可以实现吗?需要怎么 ...…

查看全部问答>

关于WINCE系统定制的问题

1.用PB定制系统时 Release和Debug有什么区别 Debug版的要占用更多的内存吗?   我的程序在Release版下 可以正常运行 在Debug版下 系统提示内存不足。 …

查看全部问答>

关于客户端和服务器数据接发问题!!!!

各位老大们: 我现在遇到一个很棘手的菜鸟问题!!希望大家指点一二。 是这样的 我最近在读一个关于客户端和服务器的程序。socket连接正常,但是我从客户端往服务器发送数据包的时候,服务器却总是显示接收第0包数据,而且我想从客户端再发另一个 ...…

查看全部问答>

有关2812AD转换的精度和采样率问题

2812的自带AD在实际应用中,是不是达不到12位? [ 本贴由 mumian 于 2008-5-7 15:49 最后编辑 ]…

查看全部问答>

晓舟通用在线调试系统(MSUODS)简介

晓舟通用在线调试系统(MornShip Universal Online Debug System,简称MSUODS)是晓舟工作室研发的具有完全自主知识产权的通用型嵌入式实时在线调试系统。MSUODS针对所有采用8051(兼容)指令的芯片,利用串口通讯实现了通行在线调试仿真系统(ICE/JTAG) ...…

查看全部问答>

verilong写12864驱动

verilong写12864驱动…

查看全部问答>