MM32F3273G8P火龙果开发板MindSDK开发教程21 - PWM的使用

news/2024/11/24 12:12:34/

MM32F3273G8P火龙果开发板MindSDK开发教程21 - PWM的使用

1、简述

开发版的LED灯连接PA1脚,而PA1可以映射TIM2_CH2,所以我们用通用定时器2的TIM2_CH2输出PWM到PA1脚,通过更改PWM的占空比,来改变LED的亮度。
在这里插入图片描述
在这里插入图片描述

2、LED灯的初始化

将PA1设定为GPIO_PinMode_AF_PushPull,并开启映射。

void GPIO_PA1_Config(void)
{/* gpio. */GPIO_Init_Type gpio_init;/* PA1 - TIM2_CH2_COMP. */gpio_init.Pins  = GPIO_PIN_1;gpio_init.PinMode  = GPIO_PinMode_AF_PushPull;gpio_init.Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &gpio_init);GPIO_PinAFConf(GPIOA, gpio_init.Pins, GPIO_AF_1);
}

3、Tim2的初始化

假定输出1KHZ的pwm波形,tim2的时钟频率为120000000,设定tim2 的prescaler = 120 -1,那么tim2 color = 120000000/(120+1) = 1000000,即StepFreqHz=1000000 。也就是1s钟需要计数1000000次,而0.001s需要计数1000次,所以period = 1000 -1。
TIM_PutChannelValue(TIM2, TIM_CHN_2, 500);/* Change duty cycle. */ 500 即period的一半,占空比=500/1000=50%,250即占空比=25%。

void TIM2_Config(void)
{GPIO_PA1_Config();/* Set the counter counting step.  1000HZ*/TIM_Init_Type tim_init;tim_init.ClockFreqHz = 120000000;tim_init.StepFreqHz = 1000000;tim_init.Period = 1000 - 1u;tim_init.EnablePreloadPeriod = false;tim_init.PeriodMode = TIM_PeriodMode_Continuous;tim_init.CountMode = TIM_CountMode_Increasing;TIM_Init(TIM2, &tim_init);/* Set the PWM output channel. */TIM_OutputCompareConf_Type tim_outcomp_conf;tim_outcomp_conf.ChannelValue = 0u;tim_outcomp_conf.EnableFastOutput = false;tim_outcomp_conf.EnablePreLoadChannelValue = false; /* Disable preload, put data immediately. */tim_outcomp_conf.RefOutMode = TIM_OutputCompareRefOut_FallingEdgeOnMatch;tim_outcomp_conf.ClearRefOutOnExtTrigger = false;tim_outcomp_conf.PinPolarity = TIM_PinPolarity_Rising;TIM_EnableOutputCompare(TIM2, TIM_CHN_2, &tim_outcomp_conf);/* Start the output compare. */TIM_EnableOutputCompareSwitch(TIM2, true);TIM_PutChannelValue(TIM2, TIM_CHN_2, 500);/* Change duty cycle. *//* Start the counter. */TIM_Start(TIM2);
}

4、Letter Shell命令添加

pwn on 开启pwm
pwm off 关闭pwm
pwm freq xx (xx为1-1000的数值)。设定pwm的占空比

int set_pwm(int argc,char *argv[])
{if (argc == 2){if (!strncmp(argv[1],"on",2)){TIM_Start(TIM2);printf("PWM On\r\n");}else if(!strncmp(argv[1],"off",3)){TIM_Stop(TIM2);LED_Off();printf("PWM Off\r\n");}else{printf("error ,please use 'pwm freq xx(1-1000)' /pwm on /pwm off\r\n");return -1;}}else if (argc == 3){if (!strncmp(argv[1],"freq",4)){uint16_t period = strtol(argv[2],NULL,10);if (period > 0 && period < 1000){printf("Pwm duty cycle changed \r\n");TIM_Stop(TIM2);LED_Off();TIM_PutChannelValue(TIM2, TIM_CHN_2, period);/* Change duty cycle. */TIM_Start(TIM2);}else{printf("error ,please use 'pwm freq xx(1-1000)' /pwm on /pwm off\r\n");return -1;}}else{printf("error ,please use 'pwm freq xx(1-1000)' /pwm on /pwm off\r\n");return -1;}}else{printf("error ,please use 'pwm freq xx(1-1000)' /pwm on /pwm off\r\n");return -1;}return 0;
}SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), pwm, set_pwm, set_pwm);

5、现象

输入pwm freq 200 以及pwm freq 800的波形图如下:
在这里插入图片描述
在这里插入图片描述

6、代码

下载路径


http://www.ppmy.cn/news/430004.html

相关文章

vga分配器 计算机无显示,为什么我用了VGA切换器后显示器再直接连接主机

公告&#xff1a; 为响应国家净网行动&#xff0c;部分内容已经删除&#xff0c;感谢读者理解。 话题&#xff1a;为什么我用了VGA切换器后显示器再直接连接主机会不显示回答&#xff1a;我遇到的问题是&#xff0c;切换到其中一台电脑能正确显示分辨率&#xff0c;切换到另一台…

键盘摄影(七)——深入理解图像信号处理器 ISP

写在前面&#xff0c;本文为笔者参考了很多篇博客&#xff0c;传感器手册&#xff0c;芯片手册&#xff0c;汇总了 ISP 可能涉及到的步骤流程&#xff0c;整理所得万字长文&#xff0c;并针对 ISP 芯片流程图总结画出了题图的 ISP流程图&#xff0c;如有错误轻喷。 主要包含&am…

显示器故障分析

显示器故障分析 故障现象&#xff1a; 一台586兼容机&#xff0c;配置为Intel 430VX主板、Pentium 100MHz CPU、16MB内存、Trident 9680显卡、Seagate 1080MB硬盘。开机后出现两种不同情况&#xff1a;1屏幕无显示&#xff0c;出现“死机”现象&#xff0c;敲任何键均无反应(显…

《FLAT-REGION DETECTION AND FALSE CONTOUR REMOVAL IN THE DIGITAL TV DISPLAY》,译名:数字电视显示中的平场检测及伪轮廓消除

目录 0. 摘要 1. 概述 2. 本文所提方法 2.1 平场检测及分割 2.2 扩展位深以消除伪轮廓 3. 实验结果 4. 结论 5. 参考文献 作者&#xff1a;Wonseok Ahn & Jae-Seung Kim (Video Lab., A/V Solution Team, Digital Media R&D Center, Samsung Electronics CO.,…

新兴技术成熟度曲线

Gartner公司发布了年度新兴技术成熟度曲线。Gartner认为&#xff0c;2017年技术成熟度曲线揭示了未来5-10年的三方面技术趋势。未来10年&#xff0c;人工智能将成为最具颠覆性的技术。通用人工智能/神经形态硬件/深度强化学习/量子计算/脑机接口等技术仍处在上升阶段。情感计算…

【STC单片机学习】第十七课:LCD1602显示器

【朱老师课程总结 侵删】 第一部分、章节目录 1.17.1_2.LCD显示器相关背景1_2 1.17.3.开始学习LCD1602 1.17.4.LCD1602控制器的低层时序1 1.17.5.LCD1602控制器的低层时序2 1.17.6.代码实践 第二部分、随堂记录 1.17.1_2.LCD显示器相关背景1_2 1.17.1.1、LCD简介 (1)显示器 …

显示器的维护与故障处理

一&#xff0e;显示器的使用维护&#xff1a; 1.显示器的放置应尽量远离强磁场&#xff0c;如高压电线、音箱等&#xff0c;否则显像管容易被磁化。 2.使用时尽量将显示器面向东方&#xff0c;因显示器出厂调整是面向东方进行的&#xff0c;这样可以使显示器受地球磁场的影响最…

电脑显示器基本设置与故障处理

随着个人电脑进入千家万户&#xff0c;作为电脑的主要设备之一的显示器也迅速在寻常百姓家普及。因为显示器要和电脑匹配使用&#xff0c;所以需要一定的微机方面基础知识&#xff0c;而刚接触到它的人还比较陌生。下面就显示器在使用过程中的注意事项及常见问题向大家作一些介…