程序有一部分是读取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未响应 导致卡死的问题相关推荐

  1. 手把手教你dns服务器未响应导致无法上网怎么办

    dns服务器未响应怎么办?其实每个问题都是有着相对应的原因外加解决方法的,我这刚好就有一篇关于如何解决dns服务器未响应的方法,现在就来分享给各位小伙伴们哈~ 不知道小伙伴们在使用电脑进行上网的时候, ...

  2. dns服务器未影响无法上网,dns服务器未响应导致无法上网怎么办

    原标题:dns服务器未响应导致无法上网怎么办 dns服务器未响应怎么办?其实每个问题都是有着相对应的原因外加解决方法的,小编我这刚好就有一篇关于如何解决dns服务器未响应的方法,现在就来分享给各位小伙 ...

  3. 【问题】win10系统IE或Edge访问网页未响应或卡死

    参考链接:win10系统IE或Edge访问网页未响应或卡死 现象: win10一切都正常,就是IE或者Edge浏览器访问网页.复制URL粘贴时容易假死.未响应等各种情况,但如果是安装的第三方浏览器又能 ...

  4. python读取一张图片未响应_opencv python 图片读取与显示图片窗口未响应问题的解决...

    显示图像是 Opencv最基本的操作之一, imshow()函数可以实现该操作.如果使用过其他GUI框架背景,就会很自然地调用 imshow来显示一幅图像.但这个观点并不完全正确,因为图像确实会显示出 ...

  5. dns服务器未响应wifi用不上,为你解答dns服务器未响应导致无法上网怎么办

    dns服务器未响应怎么办?遇到dns服务器未响应的盆友有很多,当然小编也不例外.尤其是在前几天,简直都要被气死了,不过在经过小编我的一番了解之后,后来终于将这个问题个解决好了.所以,今天小编就来给大家 ...

  6. 云服务器网无响应,服务器之家教你dns服务器未响应导致无法上网怎么办

    最近服务器之家在逛网页的时候看到有不少的网友在讨论dns未响应的解决方法,然后服务器之家就给网友们进行解答了这个问题,俗话说"独乐乐不如众乐乐",所以,今天服务器之家我就决定也来和 ...

  7. 显卡未响应导致程序崩溃 - 解决方案

    详情请参考网址:链接 为什么GPU驱动程序会发生崩溃 为了防止任何渲染或 GPU 计算锁定系统,Windows 操作系统在渲染需要几秒钟以上时都会杀掉 GPU 驱动程序.当驱动被杀掉时,使用它的应用程 ...

  8. Office Excel2010保存新文件时出现未响应或者卡死的解决办法

    被这个问题困扰很久很久...一度没法用Excel2010 解决办法: 1.打开Excel2010,点击文件--选项--加载项 2.右边最下面管理--COM加载项 3.把Chinese Conversi ...

  9. chrome浏览器上传文件延迟_谷歌Chrome上传文件未响应的解决办法

    [摘要] 这几天笔者在使用Chrome的时候遇到一个令人蛋疼的问题:使用Chrome上传文件会未响应,而这个锅竟然是搜狗输入法要背的. 谷歌Chrome可以说是目前最好用的浏览器之一了,而且Chrom ...

  10. win7系统未响应卡住_win7旗舰版程序未响应

    2017-08-10 15:12:04 电脑程序未响应导致程序无法正常打开,遇上这种情况要怎么办?win7旗舰版系统如何加快程序响应?想要解决未响应的故障,大家可以参考以下教程来设置. 2017-01 ...

最新文章

  1. This Android SDK requires Android Developer Toolkit version 22.6.2 or above.
  2. 二极管7种应用电路详解之七
  3. Spring Security 中使用Keycloak作为认证授权服务器
  4. Java对C语言Dll的加载 和 回调函数的使用
  5. 2021开封高考个人成绩查询,开封召开2021届高三二模成绩分析会
  6. 3D 立体 backface-visibility
  7. android调用python框架_在Java中从Android应用程序执行Python脚本?
  8. 部署Django工程
  9. 关于 API 定义 安全
  10. PAT1018. Public Bike Management (30)
  11. JAVA回合制pk游戏
  12. bridging the gap between anchor-based and anchor-free detection via adaptive training sample select
  13. 每日新闻丨软件业务收入64616亿元;工信部发话广电5G正式启动
  14. Python爬取链家的数据并绘制热力图
  15. Sublime Text 3 搭建 Golang 开发环境(记录我遇到的问题)
  16. QGIS 加载XYZ Tiles
  17. c语言计算n+nn+nnn+nnnn......---@颜麓
  18. 【光伏】基于战争策略算法WSO优化光伏模型附matlab代码
  19. autoCaptcha谷歌浏览器扩展工具-调用api识别验证码图片
  20. 大连娱乐地点大全 上

热门文章

  1. Java根类--Object类
  2. synchronizedMap,synchronizedList与synchronizedSet
  3. 使用Spring Data JPA作为持久层框架
  4. fedora 14 安装virtualbox
  5. ios8 gps定位不好用
  6. 类/对象/构造函数/析构函数
  7. androidru使用adb启动activity和monkeyrunner启动activity
  8. BZOJ2521[SHOI2010] 最小生成树
  9. 洞穴辐射(radiation)
  10. MD5和AES加密的处理