查看: 550|回复: 0

[求助] SPI 无法产生 Event

[复制链接]

8

主题

2

好友

406

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2014-11-26 16:58
  • 签到天数: 34 天

    [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, 2016-12-10 22:40 , Processed in 0.089824 second(s), 9 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部