读取Flash w25x64未响应 导致卡死的问题
程序有一部分是读取Flash中存储数据,向串口发送该读取数据,若串口很长时间没有串口,能判断未连接。(出现概率极低 20小时左右出现一次)
SPI_FLASH_Init(); SPI_FLASH_BufferRead((uint8_t *)posbufs,4096 + (mPOSCOUNT.posoldCount%60000) * 32,32);
/******************************************************************************* * Function Name : SPI_FLASH_Init * Description : Initializes the peripherals used by the SPI FLASH driver. * Input : None * Output : None * Return : None *******************************************************************************/ void SPI_FLASH_Init(void) { CMU_ClockEnable(cmuClock_GPIO, true);// 初始化模拟SPI的IO口// SPI_FLASH_SCK_S PA5GPIO_DriveModeSet(SPI_FLASH_SCK_PORT_S, gpioDriveModeStandard); /* ÉèÖÃÇý¶¯µçÁ÷ΪĬÈÏ´óС */GPIO_PinModeSet(SPI_FLASH_SCK_PORT_S, SPI_FLASH_SCK_PIN_S, gpioModePushPullDrive, 1); // SPI_FLASH_MOSI_S PA7GPIO_DriveModeSet(SPI_FLASH_MOSI_PORY_S, gpioDriveModeStandard); /* ÉèÖÃÇý¶¯µçÁ÷ΪĬÈÏ´óС */GPIO_PinModeSet(SPI_FLASH_MOSI_PORY_S, SPI_FLASH_MOSI_PIN_S, gpioModePushPullDrive, 1); // SPI_FLASH_NSS_S PA4GPIO_DriveModeSet(SPI_FLASH_NSS_PORT_S, gpioDriveModeStandard); /* ÉèÖÃÇý¶¯µçÁ÷ΪĬÈÏ´óС */GPIO_PinModeSet(SPI_FLASH_NSS_PORT_S, SPI_FLASH_NSS_PIN_S, gpioModePushPullDrive, 1); // SPI_FLASH_MISO_S PA6GPIO_PinModeSet(SPI_FLASH_MISO_PORY_S, SPI_FLASH_MISO_PIN_S, gpioModeInput, 1);SPI_FLASH_NSS_S_1; SPI_FLASH_SCK_S_0;SPI_FLASH_CS_HIGH(); // SPI_FLASH_ReadByte(); }
/******************************************************************************* * Function Name : SPI_FLASH_BufferRead * Description : Reads a block of data from the FLASH. * Input : - pBuffer : pointer to the buffer that receives the data read * from the FLASH. * - ReadAddr : FLASH's internal address to read from. * - NumByteToRead : number of bytes to read from the FLASH. * Output : None * Return : None *******************************************************************************/ void SPI_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead) {/* Select the FLASH: Chip Select low */SPI_FLASH_CS_LOW();/* Send "Read from Memory " instruction */SPI_FLASH_SendByte(W25X_ReadData);/* Send ReadAddr high nibble address byte to read from */SPI_FLASH_SendByte((ReadAddr & 0xFF0000) >> 16);/* Send ReadAddr medium nibble address byte to read from */SPI_FLASH_SendByte((ReadAddr& 0xFF00) >> 8);/* Send ReadAddr low nibble address byte to read from */SPI_FLASH_SendByte(ReadAddr & 0xFF);while (NumByteToRead--) /* while there is data to be read */{ //SPI_FLASH_SendByte(Dummy_Byte);*pBuffer = SPI_FLASH_ReadByte();//模拟SPI读取/* Point to the next location where the byte read will be saved */pBuffer++;}/* Deselect the FLASH: Chip Select high */SPI_FLASH_CS_HIGH(); }
/******************************************************************- ¹¦ÄÜÃèÊö£ºIOÄ£ÄâSPI£¬¶ÁÈ¡Ò»¸ö×Ö½Ú- Á¥ÊôÄ£¿é£º- º¯ÊýÊôÐÔ£ºÄÚ²¿- ²ÎÊý˵Ã÷£ºÎÞ- ·µ»Ø˵Ã÷£º·µ»Ø¶Áµ½µÄ×Ö½Ú******************************************************************/u8 SPI_FLASH_ReadByte(void) //SPI¶ÁÒ»¸ö×Ö½Ú { u8 i;u8 byte;__NOP();__NOP();__NOP();__NOP();byte=0;for (i=0; i<8; i++){byte <<= 1;SPI_FLASH_SCK_S_1;__NOP();__NOP();__NOP();__NOP();if(SPI_FLASH_MISO_S_G != 0){byte |= 1; //Wait SDO to go Hi }SPI_FLASH_SCK_S_0;__NOP();__NOP();__NOP();__NOP();}return byte;}
后发现有可能是在SPI读取过程中,被中断打断导致异常,所以在读取前后添加关闭中断,打开中断函数。
OS_ENTER_CRITICAL(); /* Tell uC/OS-II that we are starting an ISR*/DebugValue = 1;SPI_FLASH_Init();SPI_FLASH_BufferRead((uint8_t *)posbufs,4096 + (mPOSCOUNT.posoldCount%60000) * 32,32);OS_EXIT_CRITICAL();
转载于:https://www.cnblogs.com/-Donny/p/9443447.html
读取Flash w25x64未响应 导致卡死的问题相关推荐
- 手把手教你dns服务器未响应导致无法上网怎么办
dns服务器未响应怎么办?其实每个问题都是有着相对应的原因外加解决方法的,我这刚好就有一篇关于如何解决dns服务器未响应的方法,现在就来分享给各位小伙伴们哈~ 不知道小伙伴们在使用电脑进行上网的时候, ...
- dns服务器未影响无法上网,dns服务器未响应导致无法上网怎么办
原标题:dns服务器未响应导致无法上网怎么办 dns服务器未响应怎么办?其实每个问题都是有着相对应的原因外加解决方法的,小编我这刚好就有一篇关于如何解决dns服务器未响应的方法,现在就来分享给各位小伙 ...
- 【问题】win10系统IE或Edge访问网页未响应或卡死
参考链接:win10系统IE或Edge访问网页未响应或卡死 现象: win10一切都正常,就是IE或者Edge浏览器访问网页.复制URL粘贴时容易假死.未响应等各种情况,但如果是安装的第三方浏览器又能 ...
- python读取一张图片未响应_opencv python 图片读取与显示图片窗口未响应问题的解决...
显示图像是 Opencv最基本的操作之一, imshow()函数可以实现该操作.如果使用过其他GUI框架背景,就会很自然地调用 imshow来显示一幅图像.但这个观点并不完全正确,因为图像确实会显示出 ...
- dns服务器未响应wifi用不上,为你解答dns服务器未响应导致无法上网怎么办
dns服务器未响应怎么办?遇到dns服务器未响应的盆友有很多,当然小编也不例外.尤其是在前几天,简直都要被气死了,不过在经过小编我的一番了解之后,后来终于将这个问题个解决好了.所以,今天小编就来给大家 ...
- 云服务器网无响应,服务器之家教你dns服务器未响应导致无法上网怎么办
最近服务器之家在逛网页的时候看到有不少的网友在讨论dns未响应的解决方法,然后服务器之家就给网友们进行解答了这个问题,俗话说"独乐乐不如众乐乐",所以,今天服务器之家我就决定也来和 ...
- 显卡未响应导致程序崩溃 - 解决方案
详情请参考网址:链接 为什么GPU驱动程序会发生崩溃 为了防止任何渲染或 GPU 计算锁定系统,Windows 操作系统在渲染需要几秒钟以上时都会杀掉 GPU 驱动程序.当驱动被杀掉时,使用它的应用程 ...
- Office Excel2010保存新文件时出现未响应或者卡死的解决办法
被这个问题困扰很久很久...一度没法用Excel2010 解决办法: 1.打开Excel2010,点击文件--选项--加载项 2.右边最下面管理--COM加载项 3.把Chinese Conversi ...
- chrome浏览器上传文件延迟_谷歌Chrome上传文件未响应的解决办法
[摘要] 这几天笔者在使用Chrome的时候遇到一个令人蛋疼的问题:使用Chrome上传文件会未响应,而这个锅竟然是搜狗输入法要背的. 谷歌Chrome可以说是目前最好用的浏览器之一了,而且Chrom ...
- win7系统未响应卡住_win7旗舰版程序未响应
2017-08-10 15:12:04 电脑程序未响应导致程序无法正常打开,遇上这种情况要怎么办?win7旗舰版系统如何加快程序响应?想要解决未响应的故障,大家可以参考以下教程来设置. 2017-01 ...
最新文章
- This Android SDK requires Android Developer Toolkit version 22.6.2 or above.
- 二极管7种应用电路详解之七
- Spring Security 中使用Keycloak作为认证授权服务器
- Java对C语言Dll的加载 和 回调函数的使用
- 2021开封高考个人成绩查询,开封召开2021届高三二模成绩分析会
- 3D 立体 backface-visibility
- android调用python框架_在Java中从Android应用程序执行Python脚本?
- 部署Django工程
- 关于 API 定义 安全
- PAT1018. Public Bike Management (30)
- JAVA回合制pk游戏
- bridging the gap between anchor-based and anchor-free detection via adaptive training sample select
- 每日新闻丨软件业务收入64616亿元;工信部发话广电5G正式启动
- Python爬取链家的数据并绘制热力图
- Sublime Text 3 搭建 Golang 开发环境(记录我遇到的问题)
- QGIS 加载XYZ Tiles
- c语言计算n+nn+nnn+nnnn......---@颜麓
- 【光伏】基于战争策略算法WSO优化光伏模型附matlab代码
- autoCaptcha谷歌浏览器扩展工具-调用api识别验证码图片
- 大连娱乐地点大全 上