PWM输出
周期由自动重装载寄存器ARR寄存器来决定的,捕获/比较寄存器CCRx来决定占空比!!!
工作过程描述:首先假设输出为向上计数,且设置CC1P位为0高电平有效,当设置为模式1,即计数器CNT的数值小于捕获比较寄存器CCR1的值时,电平输出高电平,CNT数值大于CCR1时输出低电平,使能CC1E,最后就输出相应电平信号。
bsp_pwm_out.c文件
bsp_pwm_out.h文件
main.c文件
void PWM_OUT_POWDER_CONTROL(void)
{
u16 ledOpvmval = 0;
u8 dir =1;
while(1)//实现比较值从0-300递增,到300后从300-0递减,循环
{
delay(10);
if(dir)
ledOpvmval++;//dir==1 ledOpwmval递增
else
ledOpvmval--;//dir==0 ledOpwmval递减
if(ledOpvmval >300)
dir = 0; //ledOpvmval到达300后,方向为递减
if(ledOpvmval==0)
dir = 1; //ledOpvmval递减到0后,方向改为递增
TIM_SetCompare1(TIM14,ledOpvmval);
}
}
int main()
{
TIM14_PWM_Init(500-1,84-1);//84M/84=1MHZ的计数频率,重载值500,所以PWM频率为1M/500=2KHZ,
while(1)
{
PWM_OUT_POWDER_CONTROL();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】