打印
[应用相关]

实验分享【F407开发板】CMSISDAP驱动安装&驱动SPI彩屏&...

[复制链接]
336|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在上一帖中我忘记提及如何使用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;
                //清空计数器        
        }
}

【F407开发板】CMSISDAP驱动安装&驱动SPI彩屏&SYSTICK
http://www.stmcu.org.cn/module/forum/thread-618996-1-1.html



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都要开心呀

210

主题

505

帖子

4

粉丝