⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motorspeedcontrolbyarm101.txt

📁 利用arm101控制直流电机电机转速。利用crosswork开发环境
💻 TXT
字号:
EasyARM101的始化函数
#define    SPEED_PIN1  GPIO_PIN_0
#define    SPEED_PIN2      GPIO_PIN_1
#define    SSI      (GPIO_PIN_2︱GPIO_PIN_3︱GPIO_PIN_4︱GPIO_PIN_5)
#define    PWMA_PIN       GPIO_PIN_0
#define    KEY1_PIN        GPIO_PIN_1
#define    BUZZ_PIN        GPIO_PIN_2
#define    KEY2_PIN        GPIO_PIN_3
#define    CURRENT_PIN    GPIO_PIN_4
#define    LED2_PIN        GPIO_PIN_5
#define    LED1_PIN       GPIO_PIN_6
…………
#define     SSIBitRate         115200                /*设定SSI波特率*/
#define     SSIDataWidth       8                    /*设定SSI数据宽度*/
………
void  Config(void)
{                                                                (1)
  SysctlperipheralEnable(SYSCTL_PERIPH_SSI);         /*使能SSI外设*/
  SysctlperipheralEnable(SYSCTL_PERIPH_TIMER0);     /* 使能定时器0外设* /
  SysctlperipheralEnable(SYSCTL_PERIPH_TIME1);      /* 使能定时器1外设*/
  SysctlperipheralEnable(SYSCTL_PERIPH_GPIOA);      /*使能GPIOA口外设*/
  SysctlperipheralEnable(SYSCTL_PERIPH_SSI);         /*使能GPIOB口外设*/
  SysctlperipheralEnable(SYSCTL_PERIPH_COMP0);      /*使能比较口外设*/                                                                                                                                                              
 SSIConfig(SSI_BASE,SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER,  (2)    
 SSIBitRate,SSIDataWidth);
 SSIEnable(SSI_BASE);                         GPIODirModeSet(GPIO_PORTA_BASE,SSI,GPIO_DIR_MODE_HW);      (3)
 GPIODirModeSet(GPIO_PORTA_BASE,SPEED_PIN1︱SPEED_PID2,GPIO_DIR_MODE_IN);
 GPIOIntTypeSet(GPIO_PORTA_BASE,SPEED_PIN2︱SPEED_PIN2,GPIO_FALLING_EDGE);
 GPIOpinIntEnable(GPIO_PORTA_BASE, SPEED_PIN1︱SPEED_PID2);
 IntEnable(INT_GPIOA);                               /*设置GPIOA口部分*/
                                                               (4)
 GPIODirModeSet(GPIO_PORTA_BASE,CURRENT_PIN);
                                                    /*设置模拟比较器管教*/
GPIODirModeSet(GPIO_PORTB_BASE,PWMA_PIN, GPIO_DIR_MODE_HW);
GPIODirModeSet(GPIO_PORTB_BASE,
               (LED1_PIN︱LED2_PIN︱BUZZ_PIN),
               GPIO_DIR_MODE_OUT);
                                                   /*设置LED和BUZZ*/
 GPIODirModeSet(GPIO_PORTB_BASE,(KEY1_PIN︱KEY2_PIN), GPIO_DIR_MODE_IN);
 GPIOIntTypeSet(GPIO_PORTB_BASE,(KEY1_PIN︱KEY2_PIN), GPIO_RISING_EDGE);
GPIOpinIntEnable (GPIO_PORTB_BASE,(KEY1_PIN︱KEY2_PIN);
                                                  /*置按键中断*/
IntEnable(INT_GPIOB);
                                                                     (5)
TimerConfigure(TIMER1_BASE,(TIMER_CFG_16_BIT_PAIR︱
                           TIMER_CFG_A_ONE_SHOT ︱
                           TIMER_ CFG_B_ONE_SHOT);
TimerConfigure(TIMER0_BASE,(TIMER_CFG_16_BIT_PAIR︱
                           TIMER_CFG_A_ONE_PWM ︱
                           TIMER_ CFG_B_PERIODIC));
TimerLoadSet(TIMER0_BASE,TIMER_A,PWMLoadValue);
TimerControlLevel(TIMER0_BASE, TIMER_A,1);
TimerPresscaleSet(TIMER0_BASE, TIMER_B,100);
TimerPresscaleSet(TIMER0_BASE, TIMER_A,KeyAS);
TimerPresscaleSet(TIMER0_BASE, TIMER_B,KeyAS);
TimerEnable(TIMER0_BASE, TIMER_BOTH);
TimerIntEnable(TIMER1_BASE,(TIMER_TIMA_TIMEOUT︱TIMER_TIMB_TIMEOUT));
IntEnable(INT_TIMERIA);
IntEnable(INT_TIMERIB);
                                                  /*初始化定时器*/
                                                                 (6)
ComparatorRef(COMP_BASE,COM_REP_0_825V);        /*内部参考电压0.825V*/
ComparatorRef(COMP_BASE,COMP_ASRCP_REF);
}







主函数

Int main (void)
  {
    Unsigned char CompCnt=0;
    Config();                                                        (1)
    BUZZ_OFF();
    TimerMatchSet(TIMER0_BASE,TIMER_A,
                 (PWMLoadValue-(PWMDutyCycle*PWMLoadValue/100)));
    SSIDataPut(SSI_BASE,DISP_TAB[PWMDutyCycle/10]);
    While(1){
          If(!ComparatorValueGet(COMP_BASE,0)) {        /*判断是否堵转*/
                If(CompCnt<250){
                     CompCnt++; 
                }else{
                     BUZZ_ON();                        /*持续堵转打开蜂鸣器*/
                }
               }else{
                 If(CompCnt>0){
                      CompCnt-;
                     }else{
                      BUZZ_OFF();                      /*不堵转则关闭蜂鸣器*/
                     }
                  }
                }
              }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -