📄 main.c
字号:
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void SetBusCLK_16M(void)
{
CLKSEL=0X00;
PLLCTL_PLLON=1; //锁相环电路允许位
SYNR=0x00 | 0x01; //SYNR=1
REFDV=0x80 | 0x01;
POSTDIV=0x00;
_asm(nop);
_asm(nop);
while(!(CRGFLG_LOCK==1));
CLKSEL_PLLSEL =1;
}
void PWM_01(void) { //舵机初始化
PWMCTL_CON01=1; //0和1联合成16位PWM;
PWMCAE_CAE1=0; //选择输出模式为左对齐输出模式
PWMCNT01 = 0; //计数器清零;
PWMPOL_PPOL1=1; //先输出高电平,计数到DTY时,反转电平
PWMPRCLK = 0X40; //clockA 不分频,clockA=busclock=16MHz;CLK B 16分频:1Mhz
PWMSCLA = 0x08; //对clock SA 16分频,pwm clock=clockA/16=1MHz;
PWMCLK_PCLK1 = 1; //选择clock SA做时钟源
PWMPER01 = 20000; //周期20ms; 50Hz;
PWMDTY01 = 1500; //高电平时间为1.5ms;
PWME_PWME1 = 1;
}
void PWM_2(void) { //驱动电机初始化
PWMPRCLK=0X60;
PWMCLK_PCLK2=1;
PWMSCLB=0X7D;
PWMPOL_PPOL2=0XFF;
PWMCAE_CAE2=0X00;
PWMPER2=0X13;
PWMDTY2=0X13;
PWME_PWME2=1;
}
void main(void) {
int i;
int j;
int k;
int n;
SetBusCLK_16M();
PWM_01();
PWM_2();
while(1) {
for(i=0;i<=200;i++) {
for(j=0;j<=200;j++) {
for(k=0;k<=20;k++)
;}
}
PWMDTY01=1500;//摆正
PWMDTY2=0X03;
for(i=0;i<=200;i++) {
for(j=0;j<=200;j++) {
for(k=0;k<=20;k++)
;}
}
PWMDTY01=1000; //极左
PWMDTY2=0X03;
for(i=0;i<=200;i++) {
for(j=0;j<=200;j++) {
for(k=0;k<=20;k++)
;}
}
PWMDTY01=2000; //极右
PWMDTY2=0X09;
for(i=0;i<=200;i++) {
for(j=0;j<=200;j++) {
for(k=0;k<=20;k++)
;}
}
PWMDTY01=1000; //极左
PWMDTY2=0X09;
for(n=0;n<=999;n++)
{
for(i=0;i<=2;i++) {
for(j=0;j<=200;j++) {
for(k=0;k<=20;k++)
;}
}
PWMDTY01=PWMDTY01+1;
PWMDTY2=0X00;
}
for(n=0;n<=999;n++)
{
for(i=0;i<=2;i++) {
for(j=0;j<=200;j++) {
for(k=0;k<=20;k++)
;}
}
PWMDTY01=PWMDTY01-1;
PWMDTY2=0X00;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -