中级会员
- 积分
- 213
- 威望
- 177
- 贡献
- 30
- 兑换币
- 0
- 注册时间
- 2010-3-3
- 在线时间
- 3 小时
|
1贡献
这个是我从一本教科书上找来的程序,想拿来试下用PWM控制舵机
但是不懂为什么没有波形输出
因为是新手,悬赏不是很多。。。。
程序如下- #include <hidef.h>
- #include <mc9s12dg128.h>
- #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
- #define BUS_FREQ 32000000 //总线频率
- #define PWM_PRCLK 0x22 //CH_A=CH_B=BUS_FREQ/4
- #define CH_A_FREQ 8000000 //时钟A频率
- #define CH_B_FREQ 8000000 //时钟B频率
- #define CH_SA_FREQ 1000000 //时钟SA频率
- #define CH_SB_FREQ 1000000 //时钟SB频率
- #define CH_SA_DIV (CH_A_FREQ/(CH_SA_FREQ*2)) //CH_SA_DIV=4
- #define CH_SB_DIV (CH_B_FREQ/(CH_SB_FREQ*2)) //CH_SB_DIV=4
- #define STEER_FREQ 100 //舵机频率100Hz
- void Pwm_init(void) {
- PWMPRCLK=PWM_PRCLK;
- PWMSCLA=CH_SA_DIV;
- PWMSCLB=CH_SB_DIV;
- PWMCTL_CON45=1;、 //组合PWM45
- PWMCTL_CON67=1;
- PWMCTL_CON23=1;
-
- PWMCLK_PCLK5=1; //PWM5使用SA
- PWMCLK_PCLK3=1;
- PWMCLK_PCLK7=1;
-
- PWMPER45=(CH_SA_FREQ/STEER_FREQ);
- PWMPER23=(CH_SB_FREQ/MOTOR_FREQ);
- PWMPER67=(CH_SB_FREQ/MOTOR_FREQ);
- PWMPOL_PPOL5=1; //写PWM45的周期寄存器
- PWMPOL_PPOL3=0;
- PWMPOL_PPOL7=0;
- PWMCAE=0x00;
- PWME_PWME5=1; //左对齐
- }
- void Motor_back(uint duty) {
- PWMDTY45=duty;
- }
- void delay(unsigned int delay_time) {
- unsigned int loop_i,loop_j;
- for(loop_i=0;loop_i<delay_time;loop_i++)
- for(loop_j=0;loop_j<500;loop_j++)
- _FEED_COP();
- }
- void main(void) {
-
- Pwm_init();
- Motor_back(9250);
- delay(2000);
- for(;;){
- Motor_back(9500);
- delay(2000);
- Motor_back(9000);
- delay(2000);
- }
- }
复制代码 |
|