经过一下午的加晚上的奋战,终于搞定了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);
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |