查看: 2276|回复: 0

SPI 无法产生 Event

[复制链接]
  • TA的每日心情
    奋斗
    2014-11-26 16:58
  • 签到天数: 34 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2014-6-4 08:38:27 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 Depth 于 2014-6-4 08:46 编辑

    最近在调试的时候,又遇到了一个奇怪的问题:在往SPI的TX寄存器赋值后,无法产生Event, 导致程序一直死在while()里,代码如下:
    1. void SD_spi_write(unsigned char cmd)
    2. {
    3.     /* Put the 8 bit Data to  NRF_SPIx->TXD register*/
    4.     NRF_SPI1->TXD = (uint32_t)cmd ;
    5.     while (NRF_SPI1->EVENTS_READY == 0)   //判断是否发送完成,若发送完成会被置1
    6.     {
    7.                     //do noting
    8.     };
    9.     NRF_SPI1->EVENTS_READY = 0U ;        
    10. }
    复制代码
    最奇怪的是,如果我在最后一行或是这个函数的外面打个断点,又能看到Event 被置1了,而且可以运行下去。
    去掉断点,复位并全速运行,就会死在这个while()里面。
            之前我也遇到过两次死在while()里面的情况,一次是因为没有给SPI从设备供电导致的,一个是有个晶振焊反了。
    这次这两种情况都可以排除。
            有没有朋友遇到过这样的现象,还请告知一二,不胜感谢!



    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-22 13:08 , Processed in 0.123505 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.