|
在上一帖中我忘记提及如何使用屋脊雀CMSISDAP下载器进行程序下载和TTL串口调试,本帖补上CMSISDAP串口驱动安装教程。 首先如果安装了MDK5系列的话,DAP下载器的驱动是肯定会顺便安装上的,在工程的Debug界面下可以看到DAP下载器的配置:
这个非常简单,就不详细讲,先讲串口驱动安装,Windows系统默认是没有CMSISDAP驱动的,需要手动安装,屋脊雀提供的资料中带了CMSISDAP驱动,直接安装即可,首先要将usbser.sys文件放到C:\Windows\INF目录下覆盖:
然后将剩下的mdmcpq.inf和stmcdc.inf放到一个文件夹下,在设备管理器中安装,安装完毕之后即可识别:
为了方便大家,我将这三个文件打包发到论坛上: 然后是SPI彩屏驱动,彩屏需要三根引脚,CLK MOSI CS,时钟,数据,片选,我一开始打算使用核心板上引出的SPI FLASH引脚(PB2 PB3 PB4)作为复用来驱动彩屏的,谁知道怎么都点不亮:
我又用了别的F407开发板(没有SPI器件引脚复用)作为对照,是可以点亮的,后面我就干脆不折腾了,直接用三根GPIO(PF9 PF11 PF13)模拟SPI时序来点亮液晶彩屏:
成功点亮了:
附上驱动代码: unsigned char SPI1_ReadWriteByte(unsigned char txdata) { int i; for(i=0;i<8;i++) { SPILCD_CLK_CLR; if(txdata&0x80) SPILCD_DI_SET; else SPILCD_DI_CLR; SPILCD_CLK_SET; txdata<<=1; } } void SPILCD_Send_Command(unsigned char out_cmd) { SPILCD_CS_CLR; SPI1_ReadWriteByte(out_cmd); SPILCD_CS_SET; } void SPILCD_Send_Data(unsigned int out_data) { SPILCD_CS_CLR; SPI1_ReadWriteByte(out_data>>8); SPI1_ReadWriteByte(out_data); SPILCD_CS_SET; } 然后是SYSTICK延时,非常简单,参考原子的代码即可: void Delay_us(int nus) { int temp; SysTick->LOAD=nus*fac_us; //时间加载 SysTick->VAL=0x00; //清空计数器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数 do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达 SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器 SysTick->VAL =0X00; //清空计数器 } void Delay_ms(short nms) { unsigned char repeat=nms/540; int temp; //这里用540,是考虑到某些客户可能超频使用, //比如超频到248M的时候,delay_xms最大只能延时541ms左右了 short remain=nms%540; while(repeat) { SysTick->LOAD=(int)540*fac_ms; //时间加载(SysTick->LOAD为24bit) SysTick->VAL =0x00; //清空计数器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //开始倒数 do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达 SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器 SysTick->VAL =0X00; //清空计数器 repeat--; } if(remain) { SysTick->LOAD=(int)remain*fac_ms; //时间加载(SysTick->LOAD为24bit) SysTick->VAL =0x00; //清空计数器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //开始倒数 do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达 SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器 SysTick->VAL =0X00; //清空计数器 } } 上传工程文件:
STM32F407ZGT6.zip
(551.13 KB, 下载次数: 250)
|
微信公众号
手机版
只要把两片FLASH的CS拉高,应该就可以用了。
不是节约成本,节约成本的话,就不会有两片FLASH了。
1 首先是IO口没有那么多。
2 多个设备共用SPI控制器本来就是我要模拟的情景。
根本上就是,这套板子,是为了我做软件开发教程而做的。
这点我也想到了,也拉高了,就是不行,我还用一个别的407板子来做空白对照,接在相同的PB2~PB4引脚上,是可以驱动的。
不错,感谢分享