工具/软件:Code Composer Studio
大家好。
很抱歉我的英语不好。
我尝试在 HD44780上使用 LCD、当我完成程序时、我无法进行编译。
我不知道是什么问题。 请提供帮助。 所有库都在工作。 并且没有包含错误。
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/debug.h"
#include "driverlib/pwm.h"
#include "driverlib/pin_map.h"
#include "inc/hw_gpio.h"
#include "driverlib/rom.h"
#include "driverlib/timer.h"
#include "driverlib/timer.c"
int Timer1 (int i);
int LCDINIT (int *timer);
void LCDWIRE (int RS、int RW、int D7、int d6、int D5、int D4);
int main (空)
{
SysCtlClockSet (SYSCTL_SYSDIV_1_SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHz);//задали внешний кварц 16мгц и делитель 1.
SysCtlPWMClockSet (SYSCTL_PWMDIV_1);//задали делитель частоты для шим
SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);//включили таймер。
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);//включили порт PA
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);//включили порт PB
IntMasterDisable();//Запрещаем процессору реагировать на прерывания,чтобы он не уходил в подпрограмму прерывания。
GPIOPinTypeGPIOOutput (GPIO_Porta_base、GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);//настроили ножки порта PA2-7 на вывод
GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_4);
TimerConfigure (Timer1_base、TIMER_CFG_PERIODICRACRACASE);//включаем таймер в режим полной ширины μ s
TimerLoadSet (Timer1_base、timer_A、160);//задаем период таймера 10мкс
IntEnable (INT_TIMER1A);//разрешили прерывания по таймеру 1。
TimerIntEnable (Timer1_base、timer_TINA_TIMEOUT);//разрешаем прерывание по переполнению таймера 1 (А т μ к。используем бит таймер μ s)
TimerEnable (Timer1_base、timer_A);//включаем таймер
Timer1 (1);инициализировали програмный таймер μ s
int 计时器;
while (1)
{
定时器=定时器1 (2);
LCDINIT (&timer);
如果(LCDINIT=1)
{
LCDWIRE (1、0、0、1、0);
SysCtlDelay (100);
LCDWIRE (1、0、0、1、0);
}
}
}
int Timer1 (int I)//таймер считает по 10мкс
{
static int long t;
开关(I)
{
案例1:
{
T=0;
中断;
}
案例2:
{
if (TimerIntStatus (Timer1_base、timer_TINA_TIMEOUT))//Проверяем флаг переполнения таймера
{
T+=1;
TimerIntClear (Timer1_base、timer_TINA_TIMEOUT);//сбрасываем флаг прерывания
return (t);
}
}
}
}
空 LCDWIRE (int RS、int RW、int D7、int d6、int D5、int D4)
{
if (rw==1)
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_4、0x1);//rw=1
其他
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_4、0x0);//RW=0
如果(RS==1)
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_2、0x1);//RS=1
其他
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_2、0x0);//RS=0
if (D7=1)
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_7、GPIO_PIN_7);//данные D7
其他
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_7、0x0);//данные D7
if (d6=1)
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_6、GPIO_PIN_6);//данные d6
其他
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_6、0x0);//данные d6
if (D5=1)
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_5、GPIO_PIN_5);//данные D5
其他
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_5、0x0);//данные D5
if (D4=1)
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_4、GPIO_PIN_4);//данные D4
其他
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_4、0x0);//данные D4
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0x1);//E=1 строб
SysCtlDelay (50);
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0x0);//E=1 строб
}
INT LCDINIT (int *定时器)
{
static int sw;
开关(SW)
{
情况0:
{
if (*timer>4000)//задержка 40мс
{
SW=1;
*timer=0;
}
中断;
}
判例1://инициализация таймера 情形1 -
{
LCDWIRE (0、0、0、1、1);
SW=2;
*timer=0;
中断;
}
案例2:
{
if (*timer>410)//задержка 4.1мс
{
LCDWIRE (0、0、0、1、1);
SW=3;
*timer=0;
}
中断;
}
案例3:
{
if (*timer>=10)//задержка 100мкс
{
LCDWIRE (0、0、0、1、1);
SW=4;
*timer=0;
}
中断;
}
案例4:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、0、1、0);
SW=5;
*timer=0;
}
中断;
}
情况5:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、0、1、0);
SW=6;
*timer=0;
}
中断;
}
案例6:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、1、0、0);
SW=7;
*timer=0;
}
中断;
}
案例7:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、0、0、0);
SW=8;
*timer=0;
}
中断;
}
案例8:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、1、0、0);
SW=9;
*timer=0;
}
中断;
}
案例9:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、0、0、0);
SW=10;
*timer=0;
}
中断;
}
案例10:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、0、0、0、1);
SW=11;
*timer=0;
}
中断;
}
案例11:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、0、0、0);
SW=12;
*timer=0;
}
中断;
}
情况12:
{
if (*timer>=1)//задержка 10мкс
{
LCDWIRE (0、0、0、1、1、0);
SW=13;
*timer=0;
}
中断;
}
案例13:
{
退货(1);
}
}
}
感谢你的帮助。