金牌会员
- 积分
- 2110
- 金钱
- 2110
- 注册时间
- 2011-9-3
- 在线时间
- 119 小时
|
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);
/*Ñ¡ÔñË«Ïßµ¥ÏòÊý¾Ýģʽ£»CRC¼ÆËã½ûÖ¹£»ÏÂÒ»¸ö·¢ËÍÊý¾ÝÀ´×ÔTx»º³åÇø£»
È«Ë«¹¤;ʹÄÜÈí¼þ´ÓÉ豸¹ÜÀí;´ÓÉ豸ѡÔñΪÖ÷ģʽ */
SPI_CR2 = (0<<7)|(0<<5)|(0<<4)|(0<<2)|(1<<1)|(1<<0);
SPI_ICR = (0<<7)|(0<<6)|(0<<5)|(0<<4); /* ½ûÖ¹ËùÓÐÖÐ¶Ï */
SPI_CR1 |= (1<<6); /* ¿ªÆôSPIÄ£¿é */
PD_DDR|=BIT(2); /* ÉèÖÃD2Êý¾Ý·½Ïò¼Ä´æÆ÷ 1ΪÊä³ö£¬0ΪÊäÈë--²é¿´STM8¼Ä´æÆ÷.pdf P87 */
PD_CR1|=BIT(2); /* ÉèÖÃÍÆÍìÊä³ö--²é¿´STM8¼Ä´æÆ÷.pdf P88 */
PD_CR2|=BIT(2); /* ÉèÖÃÊä³öƵÂÊ 1Ϊ10M£¬0Ϊ2M--²é¿´STM8¼Ä´æÆ÷.pdf P89 */
PA_DDR|=BIT(3); /* ÉèÖÃA3Êý¾Ý·½Ïò¼Ä´æÆ÷ 1ΪÊä³ö£¬0ΪÊäÈë--²é¿´STM8¼Ä´æÆ÷.pdf P87 */
PA_CR1|=BIT(3); /* ÉèÖÃÍÆÍìÊä³ö--²é¿´STM8¼Ä´æÆ÷.pdf P88 */
PA_CR2|=BIT(3); /* ÉèÖÃÊä³öƵÂÊ 1Ϊ10M£¬0Ϊ2M--²é¿´STM8¼Ä´æÆ÷.pdf P89 */
SET_SPI_CS;
SET_RC522RST;
}
u8 SPIWriteByte(u8 Byte)
{
while((SPI_SR & 0x02)==0); /* µÈ´ý·¢ËͼĴæÆ÷Ϊ¿Õ */
SPI_DR = Byte; /* ½«·¢Ë͵ÄÊý¾Ýдµ½Êý¾Ý¼Ä´æÆ÷ */
while((SPI_SR & 0x01)==0); /*代码一直停在这里,请大家帮忙看看是什么原因???
return SPI_DR; /* ¶ÁÊý¾Ý¼Ä´æÆ÷ */
}
|
|