试了两天终于成功了。
我写的这个程序,如果大家要参考移植的话,12864.c这个文件一个字也不用动,所有需要移植的部分我全部写到12864.h文件来了。方便大家查看。
这两天发现几个问题特别需要注意一下。
一。要开启功能复用IO口时钟,我用的是PB口。STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些端口设置为普通I/O口。所以要关闭 JTAG 。
二。写液晶指令或者数据的时候要注意,出错的话也是不能显示的。我用宏定义来写。
#define LCD_WriteData(x) {LCD12864_GPIO->BSRR = x<<8 & 0xff00;LCD12864_GPIO->BRR = ((~x)<<8) & 0xff00;}
//高8位的数据
三。PB2是BOOT1,这个脚不要用,不然USB线下载不进去。
四。因为液晶要检测忙状态,所以控制的5个引脚我设置成推挽输出模式,但是8个数据引脚PB8~PB15我设置成开漏输出模式。在开漏模式状态下,对输入寄存器的读访问可获得I/O端口状态。PB15为忙状态检测位。
耐心做。没做出来的话之前的付出都白费了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我试了一下,你把
#define LCD_WriteData(x) {LCD12864_GPIO_DATA->BSRR = x<<8 & 0xff00;LCD12864_GPIO_DATA->BRR = ((~x)<<8) & 0xff00;} //高8位的数据
//#define LCD_WriteData(x) {LCD12864_GPIO_DATA->BSRR = x & 0x00ff;LCD12864_GPIO_DATA->BRR = ((~x)<<8) & 0x00ff;} //低8位的数据
换成#define LCD_WriteData(x) GPIO_Write(GPIOC,x)
一周热门 更多>