龙芯1B200控制步进电机

需要源码可以私信

//电机的.C文件
#include <stdio.h>

#include "ls1b.h"
#include "mips.h"
#include "bsp.h"
#include "motor_drv.h"
#include "ls1b_gpio.h"
#include "i2c/gp7101.h"
#include "ls1b_irq.h"
#include "stdint.h"


void Motor_GPIO_Config(void)
{
    Motor_Interrupt_Init();
}


//外部中断服务函数

unsigned int count=0;
static void gpio_interrupt_isr(int vector, void * param)
{
    count++;
    return;
}

//外部中断初始化
void Motor_Interrupt_Init(void)
{
    //ls1x_install_gpio_isr(KEY_UP, INT_TRIG_EDGE_UP, gpio_interrupt_isr, 0);    /* 上升沿触发 */
    ls1x_install_gpio_isr(53, INT_TRIG_EDGE_DOWN, gpio_interrupt_isr, 0);  /* 下降沿触发 */
    //ls1x_install_gpio_isr(53, INT_TRIG_LEVEL_HIGH, gpio_interrupt_isr, 0);  /* 高电平触发 */
    //ls1x_install_gpio_isr(KEY_UP, INT_TRIG_LEVEL_LOW, gpio_interrupt_isr, 0);  /* 低电平触发 */
    ls1x_enable_gpio_interrupt(53);    //使能中断

    return ;
}

//电机的.H文件

#ifndef _MOTOR_DRV_H
#define _MOTOR_DRV_H
#include "stdint.h"


void Motor_GPIO_Config(void);
uint16_t Motor_Speed_Check(void);
void Motor_Interrupt_Init(void);
void Inc_MOTOR_PIDInit(void);
unsigned int Loc_MOTOR_PIDCalc(int NextPoint);
uint16_t Motor_Speed_Check2(void);
#endif // _MOTOR_DRV_H

//主函数


#include <stdio.h>

#include "ls1b.h"
#include "mips.h"
#include "ls1x_fb.h"
#include "ls1b_gpio.h"
#include "ls1x_i2c_bus.h"

//-------------------------------------------------------------------------------------------------

#include "bsp.h"

#ifdef BSP_USE_FB
  #include "ls1x_fb.h"
  #ifdef XPT2046_DRV
    char LCD_display_mode[] = LCD_800x480;
  #elif defined(GT1151_DRV)
    char LCD_display_mode[] = LCD_800x480;
  #else
    #error "在bsp.h中选择配置 XPT2046_DRV 或者 GT1151_DRV"
           "XPT2046_DRV:  用于800*480 横屏的触摸屏."
           "GT1151_DRV:   用于480*800 竖屏的触摸屏."
           "如果都不选择, 注释掉本 error 信息, 然后自定义: LCD_display_mode[]"
  #endif
#endif

//-----------------------------------------------------------------------------------------------
extern unsigned int count;
int main(void)
{
    char  data[20];
    unsigned int frequency = 5000,i = 0;
    printk("\r\nmain() function.\r\n");

    ls1x_drv_init();                    /* Initialize device drivers */

    install_3th_libraries();              /* Install 3th libraies */
    ls1x_i2c_initialize(busI2C0);
    Motor_GPIO_Config();
    //打开显示
    fb_open();
    delay_ms(200);
    //设置输出使用的背景色
    fb_set_bgcolor(cidxWHITE,clWHITE);
    fb_textout(50, 30, "PWM电机控制实验");
    fb_textout(50, 50, "PWM输出占空比为:");
     fb_textout(50, 80, "编码器中断触发次数:");
 
 
 
    for (;;)
    {
        for(i = 0;i < 100;i+=5)
        {
            if(i>50)
            {
                break;
            }
             set_lcd_brightness(i);//设置PMW值
             sprintf(data,"%d ",i);
             fb_fillrect(200, 50, 480, 200, cidxBLACK);
             fb_textout(200, 50,data);
             sprintf(data,"%d ",count);
             fb_fillrect(200, 80, 480, 200, cidxBLACK);
             fb_textout(200, 80,data);
             delay_ms(500);
             delay_ms(500);
        }
    }

}

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值