需要源码可以私信
//电机的.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);
}
}
}