经过一下午的加晚上的奋战,终于搞定了PWM波的调试,说实话之前下午的时候代码就完成了,只是用示波器观察的时候老是显示不出理想的波形,后来知道那些都是干扰杂波,只因我下载后既没有复位也没有断电重启我的板,所以浪费了若此多的宝贵时间,在不经意间断电重启后得到了完美的理想波形。
LM3S811具有1个PWM模块提供3个PWN发生器模块和一个输出控制模块。每个发生器模块右2个PWM输出信号,它们可以单独操作,或者作为带有插入死区延时的一对信号来使用。每个发生器模块还有一个中断输出和一个触发输出。控制模块决定了PWM信号的极性以及哪些信号经过模块到达管脚。
3个发生器模块包含1个16位的减计数器或递增递减计数器,2个比较器,PWM发生器,PWM输出使能,输出机型控制。
3个发生器模块称为Gen0、Gen1和Gen2,6个输出信号称为PWM0、PWM1、PWM2、PWM3、PWM4和PWM5。
本次试验内容:控制PWM发生器输出38KHz的PWM波
实验目的:熟悉PWm发生器的配置,参数的配置:周期、占空比,输出管脚
原代码
// 使能系统时钟 使用PLL,50M
SysCtlClockSet( SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_6MHZ );
SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOB );//使能外设B端口
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM); //使能PWM外设 P195
SysCtlPWMClockSet(SYSCTL_PWMDIV_1); //PWM信号时钟 P200
// 初始化PWM2,该PWM驱动PB0
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_0);
//PWM模式设置 P139
PWMGenConfigure(PWM_BASE, PWM_GEN_1,
PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMOutputState(PWM_BASE, PWM_OUT_2_BIT, true); //使能PWM2输出P150
PWMGenPeriodSet(PWM_BASE, PWM_GEN_1, SysCtlClockGet() /38000); //设置PWM发生器1的周期
PWMPulseWidthSet(PWM_BASE, PWM_OUT_2, SysCtlClockGet() /76000);//设置PWM2输出的脉冲宽度
PWMGenEnable(PWM_BASE, PWM_GEN_1);
有奖活动 | |
---|---|
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
分享开发笔记,赚取电动螺丝刀(便携轻巧与无刷电机两款可选) | |
【活动延期至2025年6月30日】写试用笔记分享开发经验,换取手持数字示波器 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
打赏了!打赏了!打赏了! |