【MT32F006】MT32F006之PWM控制背光灯(白光)

本文最后修改时间:2026年09月15日

一、本节简介

本文介绍如何使用MT32F006使用PWM控制白光的背光灯。

二、实验平台

库版本:V1.0.0

编译软件:MDK5.37

硬件平台:MT32F006开发板(主芯片MT32F006)

仿真器:JLINK

三、版权声明

1)作者:甜甜的大香瓜

2)声明:喝水不忘挖井人,转载请注明出处。

3)本文出处:原创连载资料《简单粗暴学MT32F006》

四、实验前提

1、在进行本文步骤前,请先阅读以下章节:

1)《简单粗暴学MT32F006》的"第一章和第二章"章节。

2)《简单粗暴学MT32F006》的《MT32F006之PWM控制背光灯(RGB)》。

2、在进行本文步骤前,请先实现以下章节:

暂无

五、基础知识

暂无

六、硬件原理

七、实验步骤

1 、编写并添加驱动

1 )编写驱动GUA_PWM.c(存放在"......\Projects\MT006_StdPeriph_Templates\GUA")

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| //********************************************************************** //name: GUA_PWM.c //introduce: PWM驱动 //author: 甜甜的大香瓜 //email: 897503845@qq.com //shop: opengua.taobao.com //changetime: 2023.04.11 //********************************************************************** #include "GUA_PWM.h" /*********************宏定义************************/ #define GUA_PWM_PRESCALE 1 //PWM 分频系数 #define GUA_PWM_FREQ 4000 //PWM 频率4k /*********************全局变量************************/ //GUA_U8 gGUA_PWM_DutyCycle =0; //********************************************************************** //name: GUA_PWM_Set //introduce: PWM的设置 //parameter: nGUA_PWM_Channel:GUA_PWM_CHANNEL_R or GUA_PWM_CHANNEL_G or GUA_PWM_CHANNEL_B // nGUA_PWM_DutyCycle:占空比0~100 // nGUA_NewState:GUA_PWM_ENABLE or GUA_PWM_DISABLE //return: none //author: 甜甜的大香瓜 //email: 897503845@qq.com //shop: opengua.taobao.com //changetime: 2023.04.11 //********************************************************************** void GUA_PWM_Set(GUA_U32 nGUA_PWM_Channel, GUA_U16 nGUA_PWM_DutyCycle, FunctionalState nGUA_NewState) { MCPWM_InitTypeDef MCPWM_InitStructure; uint32_t hclk = RCC_GetClocksFreq(RCC_CLOCKFREQ_SYSAHBCLK); //通道0和通道1都是用的MCOA,极性相同 //if((nGUA_PWM_Channel == MCPWM_CHANNEL_0) || (nGUA_PWM_Channel ==MCPWM_CHANNEL_1)) { MCPWM_InitStructure.MCPWM_Channel = nGUA_PWM_Channel; //通道 MCPWM_InitStructure.MCPWM_Match = hclk/GUA_PWM_PRESCALE / GUA_PWM_FREQ / 2 *(100-nGUA_PWM_DutyCycle)/100 -1; MCPWM_InitStructure.MCPWM_Limit = hclk/GUA_PWM_PRESCALE / GUA_PWM_FREQ /2 - 1; MCPWM_InitStructure.MCPWM_DeadTime = 1; //死区时间为200ns MCPWM_InitStructure.MCPWM_Center = MCPWM_CENTER_CA; //中心对齐模式 MCPWM_InitStructure.MCPWM_Update = MCPWM_Update_EN; //MCPWM运行时可以更新PWM周期、占空比 MCPWM_InitStructure.MCPWM_Polarity = MCPWM_Polarity_ILAH; //无效状态为低电平,有效状态为高电平 MCPWM_Init(&MCPWM_InitStructure); MCPWM_Cmd(nGUA_PWM_Channel, nGUA_NewState); } /* //通道2是用的MCOB,极性相反 //else { MCPWM_InitStructure.MCPWM_Channel = nGUA_PWM_Channel; //通道 MCPWM_InitStructure.MCPWM_Match = hclk/GUA_PWM_PRESCALE / GUA_PWM_FREQ / 2 *(100-nGUA_PWM_DutyCycle)/100 -1; MCPWM_InitStructure.MCPWM_Limit = hclk/GUA_PWM_PRESCALE / GUA_PWM_FREQ /2 - 1; MCPWM_InitStructure.MCPWM_DeadTime = 1; //死区时间为200ns MCPWM_InitStructure.MCPWM_Center = MCPWM_CENTER_CA; //中心对齐模式 MCPWM_InitStructure.MCPWM_Update = MCPWM_Update_EN; //MCPWM运行时可以更新PWM周期、占空比 MCPWM_InitStructure.MCPWM_Polarity = MCPWM_Polarity_IHAL; //无效状态为高电平,有效状态为低电平 MCPWM_Init(&MCPWM_InitStructure); MCPWM_Cmd(nGUA_PWM_Channel, nGUA_NewState); }*/ } //********************************************************************** //name: GUA_PWM_Init //introduce: PWM初始化 //parameter: none //return: none //author: 甜甜的大香瓜 //email: 897503845@qq.com //shop: opengua.taobao.com //changetime: 2023.04.11 //********************************************************************** void GUA_PWM_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; uint32_t MCPWM_Prescale = GUA_PWM_PRESCALE; //PIO2_0 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_3; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIO2, &GPIO_InitStructure); RCC_APBPeriphClockCmd(RCC_AHBCLKCTRL_MCPWM, ENABLE); //MCPWM_DeInit(); MCPWM_SetPrescale(MCPWM_Prescale); //初始化通道 GUA_PWM_Set(GUA_PWM_CHANNEL_WHITE, 100, GUA_PWM_ENABLE); } |

2 )编写驱动头文件GUA_PWM.h

(存放在"......\Projects\MT006_StdPeriph_Templates\GUA")

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| //********************************************************************** //name: GUA_PWM.h //introduce: PWM驱动的头文件 //author: 甜甜的大香瓜 //email: 897503845@qq.com //shop: opengua.taobao.com //changetime: 2023.04.11 //********************************************************************** #ifndef GUA_PWM_H #define GUA_PWM_H /*********************头文件************************/ #include "mt006.h" /*********************宏定义************************/ //类型宏 #ifndef GUA_C typedef char GUA_C; #endif #ifndef GUA_U8 typedef unsigned char GUA_U8; #endif #ifndef GUA_8 typedef signed char GUA_8; #endif #ifndef GUA_U16 typedef unsigned short GUA_U16; #endif #ifndef GUA_16 typedef signed short GUA_16; #endif #ifndef GUA_U32 typedef unsigned long GUA_U32; #endif #ifndef GUA_32 typedef signed long GUA_32; #endif //白灯通道MCOA2的2通道(之前有RGB三色灯,现已去除) #define GUA_PWM_CHANNEL_WHITE MCPWM_CHANNEL_2 //通道开关 #define GUA_PWM_ENABLE ENABLE //PWM 通道开启 #define GUA_PWM_DISABLE DISABLE //PWM 通道关闭 /*********************外部全局变量声明************************/ //extern GUA_U8 gGUA_PWM_DutyCycle; /*********************外部函数声明************************/ extern void GUA_PWM_Set(GUA_U32 nGUA_PWM_Channel, GUA_U16 nGUA_PWM_DutyCycle, FunctionalState nGUA_NewState); extern void GUA_PWM_Init(void); #endif |

3 )工程中添加驱动文件

4 )在MDK设置中添加驱动源文件路径

2 、添加库的驱动

1)添加库的驱动文件(为了方便一次性都添加进来,已有则不用添加)

2 )添加库的驱动头文件(mt006_conf.h 中)(为了方便一次性都添加进来,已有则不用添加)

3 、在应用层中调用

1 )添加驱动头文件(main.c中)

|----------------------|
| #include "GUA_PWM.h" |

2 )添加驱动初始化代码(main.c的main函数中)

|----------------------------|
| //白光背光灯初始化 GUA_PWM_Init(); |

3 )添加测试代码(main.c的main函数中)

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| GUA_PWM_Set(GUA_PWM_CHANNEL_WHITE, 0, GUA_PWM_ENABLE);//关 //加延时 GUA_PWM_Set(GUA_PWM_CHANNEL_WHITE, 50, GUA_PWM_ENABLE);//50%亮度 //加延时 GUA_PWM_Set(GUA_PWM_CHANNEL_WHITE, 100, GUA_PWM_ENABLE);//最亮 |

八、注意事项

暂无

九、实验结果

暂无

相关推荐
李日华大战鸡红2 小时前
FOC SVPWM过调制(学习记录)
stm32·单片机·学习
千里马022 小时前
STM32读取AD7606-4(HAL库)
stm32·单片机·嵌入式硬件
不会代码的小猴4 小时前
中断(NVIC)
单片机·嵌入式硬件
糖糖单片机设计5 小时前
基于STM32的空气污染检测与报警系统设计与实现
stm32·单片机·嵌入式硬件
盛世宏博北京5 小时前
工业环境稳定采集:配电室 IP 温湿度变送器 TCP/UDP 通信部署指南
单片机·tcp/ip·udp
comyccccc5 小时前
自制多路输出DCDC电源板,3.3V-12V可调 学习笔记
单片机·嵌入式硬件·硬件工程
Zwawa5 小时前
把 AO 接回来:黑线和白底之间到底差了多少
c语言·单片机·嵌入式
硅基手札6 小时前
【串口技术系列文档 07】UART控制器寄存器详解
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设