能显示字符啦
这是液晶驱动文件。
lcd.rar

我的是2G的卡,为什么读到的DeviceSize是3799Mb?
ST官方的部分程序是如下:
/* Byte 6 */
tmp = (u8)((CSD_Tab[1] & 0x0000FF00) >> 8);
cardinfo->SD_csd.PartBlockRead = (tmp & 0x80) >> 7;
cardinfo->SD_csd.WrBlockMisalign = (tmp & 0x40) >> 6;
cardinfo->SD_csd.RdBlockMisalign = (tmp & 0x20) >> 5;
cardinfo->SD_csd.DSRImpl = (tmp & 0x10) >> 4;
cardinfo->SD_csd.Reserved2 = 0; /* Reserved */
cardinfo->SD_csd.DeviceSize = (tmp & 0x03) << 10;
/* Byte 7 */
tmp = (u8)(CSD_Tab[1] & 0x000000FF);
cardinfo->SD_csd.DeviceSize |= (tmp) << 2;
/* Byte 8 */
tmp = (u8)((CSD_Tab[2] & 0xFF000000) >> 24);
cardinfo->SD_csd.DeviceSize |= (tmp & 0xC0) >> 6;
cardinfo->SD_csd.MaxRdCurrentVDDMin = (tmp & 0x38) >> 3;
cardinfo->SD_csd.MaxRdCurrentVDDMax = (tmp & 0x07);
搞不懂这三条红色标出的语句。

本程序共创建了6个任务:
(1) u/COS-II Idle任务,这是由操作系统创建的空闲任务,优先级最低
(2) u/COS-II Stat任务,这是由操作系统创建的统计任务,统计CPU运行时间、CPU占用率等
(3) u/COS-II Tmr任务,这是由操作系统创建的定时器任务,为应用程序提供软件定时器,未用
(4) AppTaskStart任务,这是由用户创建的启动任务,完成如下工作:
(a) 初始化BSP
(b) 创建1个邮箱AppUserIFMbox
(c) 创建2个任务,1个是用户界面任务AppTaskUserIF,1个是按键检测任务AppTaskKbd
(d) 之后控制LED1指示灯按照100ms的周期闪烁
(5) AppTaskKbd任务,这是由AppTaskStart创建的按键检测任务
按键检测任务AppTaskKbd实时检测USER键和TAMPER键的状态,当有键按下时,则向邮箱AppUserIFMbox
发送一条消息,消息内容为按键码变量的指针。
(6) AppTaskUserIF任务,这是由AppTaskStart创建的用户界面任务
户界面任务AppTaskUserIF等待邮箱中的消息,如果USER键按下的消息则打印u/COS-II系统信息,如果
收到TAMPER键按下则打印所有的任务名称和任务优先级;如果没有收到任何信息则打印一个旋转的字符和
CPU运行时间(单位为1个滴答)。
将开发板的COM1串口用一根直连串口线连接到计算机的RS232串口或者用USB转RS232串口线连接到计算机USB口
- 计算机上运行超级终端软件(windows开始菜单-附件-通信-超级终端)或者串口工具软件SecureCRT
注意:其它一些串口助手之类的软件不支持控制指令,将导致用户看不到字符旋转效果
- 程序运行后,串口软件的窗口将显示一个旋转的字符和动态的CPU运行时间,刷新周期为100ms
- 当按下USER键时,串口软件的窗口将显示u/COS-II系统信息,如下 :
Micrium uC/OS-II
ST STM32 (Cortex-M3)
uC/OS-II : V2.86
TickRate : 1000
CPU Usage : 00%
CPU Speed : 72 MHz
#Ticks : 113
#CtxSw : 9
- 当按下TAMPER键时,串口软件的窗口将显示u/COS-II系统所有的任务名称和对应的任务优先级,如下:
Micrium uC/OS-II
ST STM32 (Cortex-M3)
Prio Used Free Per Taskname
31 68 444 13% uC/OS-II Idle
30 84 428 16% uC/OS-II Stat
3 152 1896 07% Start Task
12 248 776 24% Keyboard
4 124 388 24% User I/F


/*将写SRAM的数据BUFFER填充为从0x1234开始的连续递增的一串数据 */
Fill_Buffer(TxBuffer, BUFFER_SIZE, 0x1234);
/*将数据写入到SRAM中。WRITE_READ_ADDR:写入的起始地址*/
FSMC_SRAM_WriteBuffer(TxBuffer, WRITE_READ_ADDR, BUFFER_SIZE);
/*从SRAM中读回刚写入的数据。WRITE_READ_ADDR:读出数据的起始地址*/
FSMC_SRAM_ReadBuffer(RxBuffer, WRITE_READ_ADDR, BUFFER_SIZE);
/*判断读回的数据与写入的数据是否一致*/
for (Index = 0x00; ((Index < BUFFER_SIZE) && (WriteReadStatus == 0)); Index++)
{
if (RxBuffer[Index] != TxBuffer[Index])
{
WriteReadStatus = Index + 1;
}
}
printf("\n\r SRAM读写访问程序运行结果: ");
if (WriteReadStatus == 0)
{
printf("\n\r SRAM读写访问成功");
GPIO_ResetBits(GPIO_LED, DS2_PIN);
}
else
{
printf("\n\r SRAM读写访问失败");
GPIO_ResetBits(GPIO_LED, DS3_PIN);
}
回复
有奖活动 | |
---|---|
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 |