OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2356|回复: 2

STM8 SPI一直停在接收寄存器这里。

[复制链接]

39

主题

599

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2109
金钱
2109
注册时间
2011-9-3
在线时间
119 小时
发表于 2016-9-13 19:51:16 | 显示全部楼层 |阅读模式
3金钱
好久没完STM8了,最近需要用到。想用SPI驱动的时候,发现程序一直停留在接收寄存器这里。请大侠帮忙看看。代码如下:
void SPI_Init(void)
{


/* ÏÈ·¢ËÍMSB£»Fmaster/2;½ûÖ¹SPIÉ豸£»Ö÷É豸£»¿ÕÏÐ״̬ʱSCKΪ¸ßµçƽ;
  Êý¾Ý´ÓµÚ¶þ¸öʱÖÓ±ßÑØ¿ªÊ¼²ÉÑù ¡£  */
  SPI_CR1 = (0<<7)|(0<<6)|(0<<3)|(1<<2)|(1<<1)|(1<<0);  
  /*&#209;&#161;&#212;&#241;&#203;&#171;&#207;&#223;&#181;&#165;&#207;ò&#202;&#253;&#190;&#221;&#196;&#163;&#202;&#189;&#163;&#187;CRC&#188;&#198;&#203;&#227;&#189;&#251;&#214;&#185;&#163;&#187;&#207;&#194;&#210;&#187;&#184;&#246;·&#162;&#203;&#205;&#202;&#253;&#190;&#221;&#192;&#180;×&#212;Tx&#187;&#186;&#179;&#229;&#199;&#248;&#163;&#187;
  &#200;&#171;&#203;&#171;&#185;¤;&#202;&#185;&#196;&#220;&#200;í&#188;&#254;&#180;&#211;&#201;è±&#184;&#185;&#220;&#192;í;&#180;&#211;&#201;è±&#184;&#209;&#161;&#212;&#241;&#206;&#170;&#214;÷&#196;&#163;&#202;&#189; */
  SPI_CR2 = (0<<7)|(0<<5)|(0<<4)|(0<<2)|(1<<1)|(1<<0);  
  SPI_ICR = (0<<7)|(0<<6)|(0<<5)|(0<<4);                /* &#189;&#251;&#214;&#185;&#203;ù&#211;&#208;&#214;&#208;&#182;&#207; */
  SPI_CR1 |= (1<<6);                                    /* &#191;&#170;&#198;&#244;SPI&#196;&#163;&#191;é */

  PD_DDR|=BIT(2);   /* &#201;è&#214;&#195D2&#202;&#253;&#190;&#221;·&#189;&#207;ò&#188;&#196;&#180;&#230;&#198;÷ 1&#206;&#170;&#202;&#228;&#179;&#246;&#163;&#172;0&#206;&#170;&#202;&#228;&#200;&#235;--&#178;é&#191;&#180;STM8&#188;&#196;&#180;&#230;&#198;÷.pdf P87 */
  PD_CR1|=BIT(2);   /* &#201;è&#214;&#195;&#205;&#198;&#205;ì&#202;&#228;&#179;&#246;--&#178;é&#191;&#180;STM8&#188;&#196;&#180;&#230;&#198;÷.pdf P88 */
  PD_CR2|=BIT(2);   /* &#201;è&#214;&#195;&#202;&#228;&#179;&#246;&#198;&#181;&#194;&#202; 1&#206;&#170;10M&#163;&#172;0&#206;&#170;2M--&#178;é&#191;&#180;STM8&#188;&#196;&#180;&#230;&#198;÷.pdf P89 */   
  
  PA_DDR|=BIT(3);   /* &#201;è&#214;&#195A3&#202;&#253;&#190;&#221;·&#189;&#207;ò&#188;&#196;&#180;&#230;&#198;÷ 1&#206;&#170;&#202;&#228;&#179;&#246;&#163;&#172;0&#206;&#170;&#202;&#228;&#200;&#235;--&#178;é&#191;&#180;STM8&#188;&#196;&#180;&#230;&#198;÷.pdf P87 */
  PA_CR1|=BIT(3);   /* &#201;è&#214;&#195;&#205;&#198;&#205;ì&#202;&#228;&#179;&#246;--&#178;é&#191;&#180;STM8&#188;&#196;&#180;&#230;&#198;÷.pdf P88 */
  PA_CR2|=BIT(3);   /* &#201;è&#214;&#195;&#202;&#228;&#179;&#246;&#198;&#181;&#194;&#202; 1&#206;&#170;10M&#163;&#172;0&#206;&#170;2M--&#178;é&#191;&#180;STM8&#188;&#196;&#180;&#230;&#198;÷.pdf P89 */   

  SET_SPI_CS;
  SET_RC522RST;
}

u8 SPIWriteByte(u8 Byte)
{
  while((SPI_SR & 0x02)==0);              /* &#181;&#200;&#180;&#253;·&#162;&#203;&#205;&#188;&#196;&#180;&#230;&#198;÷&#206;&#170;&#191;&#213; */
  SPI_DR = Byte;                        /* &#189;&#171;·&#162;&#203;&#205;&#181;&#196;&#202;&#253;&#190;&#221;&#208;&#180;&#181;&#189;&#202;&#253;&#190;&#221;&#188;&#196;&#180;&#230;&#198;÷ */
  while((SPI_SR & 0x01)==0);              /*代码一直停在这里,请大家帮忙看看是什么原因???
  return SPI_DR;                        /* &#182;&#193;&#202;&#253;&#190;&#221;&#188;&#196;&#180;&#230;&#198;÷ */        
}


最佳答案

查看完整内容[请看2#楼]

结贴。原因已找到,不小心把内部SPI的电源关掉了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

599

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2109
金钱
2109
注册时间
2011-9-3
在线时间
119 小时
 楼主| 发表于 2016-9-13 19:51:17 | 显示全部楼层
结贴。原因已找到,不小心把内部SPI的电源关掉了。
回复

使用道具 举报

557

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165047
金钱
165047
注册时间
2010-12-1
在线时间
2102 小时
发表于 2016-9-13 20:42:50 | 显示全部楼层
帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-29 05:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表