如图,大概有30多个这样的错误,我把stm32f10x_type.h去掉后,30多个错误没了,但是多了几个错误,显示是找不到这个头文件。我写的是LCD12232的驱动程序,现在只是想在屏上显示“lcd test”,程序部分,除了test.c,LCD.c,LCD.h,以及一些IO口的设置是自己写的,其余的都是照抄OLED的代码,但是就出错了,请问怎么解决?
附上自己写的部分:
//test.c
#include <stm32f10x_lib.h>
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"
int main(void)
{
u8 t=0;
Stm32_Clock_Init(9);
delay_init(72);
uart_init(72,9600);
LCD_Init();
delay_ms(10);
while(1)
{
LCD_ShowString(10,10,"lcd test");
LCD_Refresh_Gram();
delay_ms(500);
LCD_Clear();
}
}
//LCD.h
#ifndef __LCD_H
#define __LCD_H
#include "sys.h"
#include "stdlib.h"
#define LCD_W 122
#define LCD_H 32
#define LCD_CMD 0 //写命令
#define LCD_DATA 1 //写数据
//端口定义
#define LCD_RES PAout(6)
#define LCD_A0 PBout(5)
#define LCD_EN1 PAout(8)
#define LCD_EN2 PBout(3)
#define LCD_RW PBout(4)
//输出PB8-15,作为数据线
#define DATAOUT(x) GPIOB->ODR=(GPIOB->ODR&0x00FF)|(x&0xFF00);
//LCD控制用函数
void LCD_WR_Byte(u8 dat,u8 cmd);
void LCD_Display_On(void);
void LCD_Display_Off(void);
void LCD_Refresh_Gram(void);
void LCD_Init(void);
void LCD_Clear(void);
void LCD_DrawPoint(u8 x,u8 y,u8 t);
void LCD_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);
void LCD_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode);
void LCD_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size);
void LCD_ShowString(u8 x,u8 y,const u8 *p);
#endif
//LCD.c部分程序
void LCD_Init(void)
{
RCC->APB2ENR=1<<2;
RCC->APB2ENR=1<<3;
GPIOB->CRH&=0X00000000;
GPIOB->CRH|=0X33333333;
GPIOB->ODR|=0X03;
LCD_WR_Byte(0XE2,LCD_CMD);//复位
LCD_WR_Byte(0XAE,LCD_CMD);//关闭显示
LCD_WR_Byte(0XA4,LCD_CMD);//关静态驱动,即正常驱动
LCD_WR_Byte(0XA9,LCD_CMD);//ADC顺时针输出
LCD_WR_Byte(0XE0,LCD_CMD);//“读-修改-写”模式设置
LCD_WR_Byte(0X00,LCD_CMD);//列地址设置
LCD_WR_Byte(0XC0,LCD_CMD);//设置显示起始行
LCD_WR_Byte(0xAF,LCD_CMD);//开启显示
}
备注:我用的是stm32f101,不是103,我看过数据手册,相关IO口设置应该没错的。