STM32F103+HAL+PWM+DMA+WS2812

发布者:Yaqi最新更新时间:2019-04-09 来源: eefocus关键字:STM32F103  HAL  PWM  DMA  WS2812 手机看文章 扫描二维码
随时随地手机看文章

如题:用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);

}


关键字:STM32F103  HAL  PWM  DMA  WS2812 引用地址:STM32F103+HAL+PWM+DMA+WS2812

上一篇:STM32之使用PWM控制多路舵机
下一篇:【STM32F103】按键检测(GPIO输入)

推荐阅读最新更新时间:2024-03-16 16:27

STM8输出PWM变频时波形断开解决方法
  在使用STM8单片机的PWM功能时,一直没出现过问题。但是在一个项目中需要在PWM波输出的过程中变频,这时候问题来了。在PWM输出过程中,输出的波形是不是的就会有一大段空白的地方,好像波形输出被关闭了一样。 输出波形如下图所示:   放大后查看   可以看到波形输出的过程中突然就消失了,而且还不是偶尔的出现一次。是频繁的出现。这就奇怪了?难道是单片机坏了?换了几个单片机测试都是这样的,那么肯定就是软件代码出问题了。那么到底是什么地方有问题了,于是开启找BUG模式,一行一行代码分析。   代码分析了半天也没找不到哪行代码有问题,输出单一频率的PWM波一直很稳定,只是改变频率的时候就会出现波形断开情况,频率改变的越多,
[单片机]
STM8输出<font color='red'>PWM</font>变频时波形断开解决方法
STC15单片机6路专用PWM
(1)STC例程分析 /* STC15Fxx 系列 输出任意周期和任意占空比的PWM实例*/ #define CYCLE 0x1000L //定义PWM周期(最大值为32767) #define DUTY 10L //定义占空比为10% void pwm() { P0M0 = 0x00; //因PWM模块相关IO口初始状态为高阻,需要将IO口设置为准双向或推挽输出才能正常输出波形; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4
[单片机]
stm32f103c8t6最小系统AD工程,封装
7*7厘米大小,稳压用的LM1117s,已经打印焊接过了,可以用。两边的是焊盘不能焊排针。因为是新手画的板子比较大。反正能用,LED灯的焊盘稍微有点问题,焊盘距离有点大,但也能焊上。其他封装都没什么问题。当初画的时候找封装找了好久,在这里发一下,看到的直接用就好了。
[单片机]
<font color='red'>stm32f103</font>c8t6最小系统AD工程,封装
基于DPPC2006的数字音频功率放大器
   摘要: 采用直接数字放大技术,设计了基于DPPC2006的数字音频功率放大器,该系统采用高速VMOSFET构成H桥互补对称结构,控制功能由AT89S51实现.测试结果表明:该系统最大不失真输出率大于6W,平均效率可达73.24%,性价比较高。    关键词 :数字功放;DPPC2006;PWM;AT89S51    引言 随着电子产品的数字化进程不断演进,音响设备(尤其是其中的关键产品功率放大器)的数字化也提上了日程。目前市场上很多功放产品都打出了“数字”的旗号,但其中有很多只是对产品进行了一些数字化处理,严格意义上只能称作数字化功放,真正的音频信号还是模拟的.数字功放是指在信号的处理过程中采用的是数字音频信号,用
[模拟电子]
STM32CubeMX开发stm32f103rbt6 JLINK(一)
1、新建工程 2、选择芯片 3、管脚配置 4、时钟配置 5、工程生成配置 6、生成工程 7、打开软件工程 8、Keil 下载设置 9、下载 注意:安装好Jlink驱动 常见问题: 1、如图 解决:硬件问题,检查接线,电源以及BOOT0,BOOT1 2、JLINK不识别CPU 原因1、检查是否禁用了SWD:stm32f1xx_hal_msp.c---- void HAL_MspInit(void) __HAL_AFIO_REMAP_SWJ_DISABLE(); 短接复位电容(C7),在断开
[单片机]
STM32CubeMX开发<font color='red'>stm32f103</font>rbt6 JLINK(一)
MSP实时输出占空比可调的pwm波形
// 占空比可调的PWM, 我没试过, 手里没单片机, 只是记下. #include msp430x14x.h void main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 |= XTS; // ACLK= LFXT1 = HF XTAL do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i 0; i--) { // Time fo
[单片机]
stm32之DMA彻底研究(2)
AD转换之DMA 1、DMA的配置 //DMA的配置 void DMA_Configuration(void) { /* 允许 DMA1 */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); /* DMA通道1*/ DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr =(u32)( &(ADC1- DR)); //ADC1数据寄存器 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADCCov; //获取ADC的数组 DMA_InitStructure.
[单片机]
LED驱动电路脉冲调制PWM电路设计
  本文主要从电子电路、热分析、光学 方面阐述了如何运用LED 特性进行设计。LED照明 作为新一代照明受到了广泛的关注。仅仅依靠LED封装 并不能制作出好的照明灯具。 这次主要针对运用脉冲调制的驱动电路进行说明。   PWM是什么?   脉冲调制英文表示是Pulse Width Modulation,简称PWM。PWM是调节脉冲波占空比的一种方式。如图1所示,脉冲的占空比可以用脉冲周期、On-time、Off-time表示,如下公式:   占空比=On-time(脉冲的High时间)/ 脉冲的一个周期(On-time + Off-time)   Tsw(一周期)可以是开关 周期,也可以是Fsw=1/Tsw的开关频率。
[电源管理]
LED驱动电路脉冲调制<font color='red'>PWM</font>电路设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved