基于arm的逆变电源软件设计与实现内容摘要:

Uint32 *sp。 /*定义一个 32位的指针 */ Uint16 i,PRD。 /*读取因子表 PRD=PRD55[3]。 sp=(Uint32 *)0x3ff000。 /*旋转因子表的起始地址 Uint32 *sp。 */ for(i=0。 iSPWM_NUM。 i++) { SPWM55[i]=(*sp15)。 /*由 Q30变成 Q15格式 OK*/ 初始化读 f 并显示中断按键控制f 调节PWM 的占空比调节计算 Tsf 和电压显示切换Ts 装入 T imer 1 并启动 T imer 1查表并计算 t on 、 t o f ft on 、 t o f f装入 T imer 2 并启动 T imer 2返回 sp++。 } /*计算 SPWM脉宽 */ for(i=0。 iSPWM_NUM。 i++) { SPWM55[i]=(((Uint32)SPWM55[i]*PRD)15)。 /*变为 Q0格式 */ } PRD++。 for(i=0。 iSPWM_NUM。 i++) { SPWM55[i]=PRDSPWM55[i]。 } /*补偿死区时间 */ for(i=0。 iSPWM_NUM。 i++) { if(SPWM55[i]100) SPWM55[i]=SPWM55[i]79。 } 通过电压检测传感器检测电压大小。 并将电压值反馈到微处理器 LM3S1138,形成闭环,能挺高系统的精度和稳定性。 AD初始化程序: void timer0Init(void) { SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0)。 /*使能定时器模块 */ TimerConfigure(T0_B_CFG_16_PER)。 /* 配置 TimerB为 16位周期定时器 */ TimerPrescaleSet(T0_B , 99)。 /* 预先进行 100分频 */ TimerLoadSet(T0_B , 30000UL)。 /* 设置定时器初值 */ TimerIntEnable(T0_B_INT_TIMEOUT)。 /* 使能 TimerB超时中断 */ IntEnable(INT_TIMER0B)。 /* 使能 TimerB中断 */ IntMasterEnable()。 /* 使能处理器中断 */ TimerEnable(T0_B)。 /*使能 TimerB */ } 定时器 Timer1 用来采样周期定时,计算出导通时间和关断时间,并将定时时间传给Timer2,其程序框图如图。 Timer1初始化程序: void timer1Init(void) { SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0)。 /*使能定时器模块 */ TimerConfigure(T0_B_CFG_16_PER)。 /* 配置 16位定时器 */ TimerPrescaleSet(T0_B , 99)。 /* 预先进行 100分频 */ TimerLoadSet(T0_B , 30000UL)。 /*设置定时器初值 */ TimerIntEnable(T0_B_INT_TIMEOUT)。 /*使能 TimerB超时中断 */ IntEnable(INT_TIMER0B)。 /* 使能 TimerB中断 */ IntMasterEnable()。 /* 使能处理器中断 */ TimerEnable(T0_B)。 /* 使能 TimerB */ }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。