1.PWM简介
脉冲宽度调制(PWM,Pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。即对脉冲宽度的控制,PWM原理如下图示:
图中我们假定定时器是工作在向上计数PWM模式,且当CNT < CCRx时输出0,当CNT >= CCRx时输出1,那么就可以得到如上的PWM示意图:当CNT < CCRx时,IO口输出低电平;当CNT >= CCRx时,IO口输出高电平;当CNT值达到ARR的时候,重新归零,然后重新向上计数,依次循环。改变CCRx的值就可以改变PWM输出的占空比,改变ARR的值就可以改变PWM输出的频率
输出模式有两种:PWM1和PWM2
输出极性:高电平有效和低电平有效
2.硬件设计
本实验通过TIM3的通道1输出PWM信号,控制D7指示灯的亮度:
* 指示灯D7 * 定时器TIM31.2.3.
此处由于TIM3的CH1通道对应的管脚是PA6,开发板上的LED并没有连接在PA6上,如果要让这个通道映射到LED所接的IO口上,需要使用GPIO的复用功能重映射功能将PA6重映射到PC6
3.软件设计
3.1 STM32CubeMX设置
➡️ RCC设置外接HSE,时钟设置为72M;TIM3的时钟挂载在APB1 Time Clocks上为72MHz
➡️ 选择TIM3、设置定时器时钟源为内部时钟源、设置通道1为PWM模式(对应管脚PA6自动开启,此时应该选中PC6的TIM3_CH1完成重映射)、自行选择是否开启定时器中断
➡️ 预分频系数设置为72-1,向上计数,自动重装载值设为500-1,则计时器时钟频率为1MHz,计时器周期为1us,定时器溢出周期(即PWM周期)为 500 * 1 = 500us,溢出频率(即PWM频率)为1/500us = 2KHz
➡️ PWM模式选择PWM1,Pulse默认为0,PWM极性设置为低电平(由于LED低电平点亮)
➡️输入工程名,选择路径(不要有中文),选择MDK-ARM V5;勾选Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;点击GENERATE CODE,生成工程代码
3.2 MDK-ARM软件编程
➡️ 在tim.c文件中可以看到定时器的初始化函数
void MX_TIM3_Init(void)
{
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
htim3.Instance = TIM3;
htim3.Init.Prescaler = 72-1;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 500-1;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim3) != HAL_OK){
Error_Handler();
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK){
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK){
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK){
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK){
Error_Handler();
}
__HAL_TIM_DISABLE_OCxPRELOAD(&htim3, TIM_CHANNEL_1);
HAL_TIM_MspPostInit(&htim3);
}
➡️ 在main函数中编写代码,周期性的改变CCR1的值来改变PWM占空比
int main(void){
/* USER CODE BEGIN 1 */
uint8_t dir = 1;
uint16_t ledpwmval = 0;
/* USER CODE END 1 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
//开启定时器PWM输出
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
/* USER CODE END 2 */
while (1){
HAL_Delay(10);
if(dir)
ledpwmval++;
else
ledpwmval--;
if(ledpwmval > 300)
dir = 0;
if(ledpwmval == 0)
dir = 1;
//更改CCR1的值来改变PWM的占空比
TIM3->CCR1 = ledpwmval;
}
}
4.下载验证
编译无误后下载到开发板,可以看到D7指示灯有暗变亮,再由亮变暗,呈现呼吸灯的效果
上一篇:stm32cubeMX配置串口
下一篇:stm32cubemx配置编码器
推荐阅读
史海拾趣
Golledge Electronics公司的发展故事
故事一:石英晶体振荡器的创新起点
Golledge Electronics公司的起源可以追溯到对石英晶体振荡器技术的深入研究和创新。公司最初成立于英国水晶产区的中心,依托当地丰富的水晶资源,Golledge迅速成为石英晶体振荡器领域的佼佼者。公司创始人敏锐地意识到石英晶体的压电特性在电子系统中的重要应用价值,于是投入大量资源进行研发。通过不断优化晶体制造工艺和温度补偿技术,Golledge成功推出了高精度、高稳定性的石英晶体振荡器,为无线电通信、卫星通信等领域提供了关键技术支持。这一创新不仅奠定了Golledge在电子行业的基础,也为其后续发展铺平了道路。
故事二:微机电系统(MEMS)技术的突破
随着电子产品的不断小型化和便携化,Golledge Electronics公司紧跟时代步伐,将研发重点转向微机电系统(MEMS)技术。MEMS谐振器以其紧凑的尺寸和稳健的性能,成为便携式设备和可穿戴设备中的理想选择。Golledge通过自主研发和合作创新,成功将MEMS技术应用于频率控制产品中,推出了多款高性能、低功耗的MEMS谐振器。这些产品不仅满足了市场对小型化、轻量化的需求,还进一步提升了电子系统的整体性能和可靠性。Golledge在MEMS技术领域的突破,为其在电子行业中的领先地位增添了新的动力。
故事三:新材料应用的探索
为了不断提升产品的性能和质量,Golledge Electronics公司始终致力于新材料的研发和应用。公司研发团队通过深入研究石英晶体的物理特性和化学性质,成功开发出了一系列具有独特性能的石英晶体材料。这些新材料不仅具有更高的稳定性和频率精度,还能够在极端环境下保持优异的性能表现。Golledge将这些新材料应用于频率控制产品中,显著提升了产品的竞争力和市场占有率。同时,公司还积极探索其他新型材料的应用潜力,为未来的技术创新储备了丰富的资源。
故事四:机器学习集成的创新实践
随着人工智能技术的快速发展,Golledge Electronics公司敏锐地捕捉到这一趋势,并积极探索机器学习在频率控制领域的应用。公司研发团队通过集成机器学习算法,使频率控制系统能够动态地适应和优化频率设置。这一创新实践不仅确保了频率控制系统的持续准确性,还为其赋予了自我学习和自我优化的能力。Golledge的这一创新成果,不仅提升了产品的智能化水平,也为电子行业的未来发展提供了新的思路和方向。
故事五:超微型SMD晶体的商用化
为了满足市场对更小、更轻、更高效的电子产品的需求,Golledge Electronics公司推出了超微型1610mm封装SMD晶体,并成功实现商用化。这款晶体以其极小的尺寸和优异的性能,迅速赢得了市场的青睐。Golledge通过不断优化生产工艺和质量控制体系,确保了超微型SMD晶体的稳定供应和高质量表现。这款产品的成功商用,不仅进一步巩固了Golledge在电子行业中的地位,也为其在小型化、便携化电子产品领域的发展开辟了新的市场空间。
20世纪60年代,人类开始迈入太空探索的新纪元。在这个充满挑战和未知的领域中,紧固件的可靠性和安全性至关重要。1961年,艾伦·谢波德成为第一个乘坐麦克唐纳道格拉斯太空舱在太空旅行的美国人,而太空舱里的数千根软管和扎带卡箍正是由BAND-IT公司提供。这些产品以其出色的耐用性和可靠性,经受住了太空极端环境的考验,为太空探索的安全和成功作出了贡献。
迦美信芯通讯技术有限公司成立于2008年,总部位于被誉为“中国硅谷”的上海张江高科技园区。自成立以来,公司便专注于射频领域集成电路的研发和销售。凭借对技术的深入理解和不懈追求,迦美信芯逐渐在射频前端市场占据了一席之地。
Atmel(Microchip)一直注重技术创新和产品升级。公司不断投入研发资金,推动新产品的研发和现有产品的改进。通过引入新技术、优化产品设计等方式,Atmel的产品在性能、功耗、可靠性等方面都得到了显著提升。这些创新成果不仅满足了客户日益增长的需求,也为公司赢得了更多的市场份额。
随着全球市场的不断扩大,ALD积极推进国际化战略。公司通过与全球各地的OEM制造商建立合作关系,将产品销往世界各地。同时,ALD还积极参与国际电子展会和论坛,展示其最新技术和产品,与全球同行交流合作。这些举措不仅提升了ALD的国际知名度,还为公司带来了更多的商机和发展空间。
随着Crane Co.在电子行业的不断发展和壮大,公司开始积极参与国际展览和会议。在某次重要的国际展览上,Crane Co.展示了其全系列的流体处理产品,包括创新的阀门和泵类产品。这些产品凭借其卓越的性能和先进的技术,吸引了众多参展商和客户的关注。通过这次展览,Crane Co.进一步巩固了其在电子行业的地位,并为未来的市场拓展奠定了坚实基础。
通过以上五个故事,我们可以看到Crane Co.在电子行业发展的历程中,始终保持着对技术创新和产品质量的不懈追求。正是这些努力,使得Crane Co.能够在激烈的市场竞争中脱颖而出,成为行业内的佼佼者。
职场上,学习高深的理论,钻研有难度的技术,对于职场人来说都算不上是难事,只要你肯下功夫,都能攻下堡垒。最难的就是与人打交道,特别是与那些可怕的人打交道。所以,千万小心,别做职场里的笨角色。 笨事一:你不理会谣言 错了!谣 ...… 查看全部问答∨ |
|
君正的挂起后不能唤醒进入正常工作状态,如何解决?急急急急急!!!请高手指点指点 君正的挂起后不能唤醒进入正常工作状态,如何解决?急急急急急!!! 背光的调节从哪里控制?按键是可调的,应用程序不可用,请高手指点指点!!!!谢谢!!!!!… 查看全部问答∨ |
我用的QQ2440的开发板,从nor flash启动将一个系统nk.bin从烧到开发板后启动正常,然后关机从nand flash启动却一直停留在开发板的欢迎界面,而不能启动系统,请问是否有人遇到过这种问题,为什么会这样呢?… 查看全部问答∨ |
使用的环境是vc2005和pb5.0 用pb5定制新sdk,配置开发语言的时候,只发现evc4.0,只好选了,勾上cf。 sysgen,mksdk,安装好这个sdk, 在vc2005下,在工具/仿真设备下 ,出现 由于前面的错误,Smart Device Configuration Package ({D245F354-3 ...… 查看全部问答∨ |
|
基于SX1212的低功耗无线模块,主控芯片采用同样低功耗的STM8L101.其中SX1212和MCU之间采用SPI通信。自己刚学单片机不久,经验不足,英语也不太好。所以在看1212的手册时有点吃力,刚开始了解通信这方面,时序图也没看过几个(希望前辈们能分享点经 ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- Metcal可调温GT系列焊接系统e络盟开售
- ams光谱传感技术助力ELDIM快速检测出COVID-19
- 是德终端设备仿真仪解决方案为创智联恒提供更高的5G性能
- SCHURTER PSE EX系列开关获得 ATEX / IECEx 认证,可用于防爆环境
- 扩大碳化硅供应,英飞凌联手GT Advanced Technologies
- 小米财报解读:尝试摆脱低端依赖 互联网营收占比下滑
- 全球人工智能专利申请:美国领先,中国处于第二梯队,百
- 流量经营顶到“天花板”: 运营商增收转向新兴业务
- 5G旗手大唐移动换帅:罗昆初出任董事长 孙晓南升任总经理
- Counterpoint发布上半年国内智能手机报告:整体负增长,价格