|
本帖最后由 lcf144103 于 2019-12-23 20:59 编辑
PHY是DP83848C,到这里就直接进入死循环了,while (ETH->DMABMR & DBMR_SR);
硬汉哥说是所有的内核时钟域完成复位值就为0,我这是哪里出了问题啊。。。
void init_ethernet (void) {
/* Initialize the ETH ethernet controller. */
U32 regv,tout,id1,id2;
/* Reset Ethernet MAC */ RCC->AHBRSTR |= 0x00004000;
/* Enable RMII, remap RX pins to PD8 .. PD10 */
AFIO->MAPR |= 0x00A00000;
RCC->AHBRSTR &=~0x00004000;
/* Enable clock for MAC. */
RCC->AHBENR |= 0x0001C000;
/* Enable clock for Port A,B,C,D and Alternate function */
RCC->APB2ENR |= 0x0000003D;
#ifdef STM3210C
/* Use MII on STM3210C-EVAL board. */
/* Remap MII RX pins to PD8 .. PD12 */
AFIO->MAPR |= 0x00200000;
/* Configure Port A ethernet pins. */
GPIOA->CRL &= 0xFFFF0000;
GPIOA->CRL |= 0x00004B44;
GPIOA->CRH &= 0xFFFFFFF0;
GPIOA->CRH |= 0x0000000B;
/* Configure Port B ethernet pins */
GPIOB->CRH &= 0xFF0000F0;
GPIOB->CRH |= 0x00BBB40B;
/* Configure Port C ethernet pins */
GPIOC->CRL &= 0xFFFF000F;
GPIOC->CRL |= 0x00004BB0;
/* Configure Port D ethernet pins */
GPIOD->CRH &= 0xFFF00000;
GPIOD->CRH |= 0x00044444;
#else
/* Use RMII on MCBSTM32C evaluation board. */
/* Configure Port A ethernet pins. */
GPIOA->CRL &= 0xFFFFF00F;
GPIOA->CRL |= 0x00000B40;
/* Configure Port B ethernet pins */
GPIOB->CRH &= 0xFF000FFF;
GPIOB->CRH |= 0x00BBB000;
/* Configure Port C ethernet pins */
GPIOC->CRL &= 0xFFFFFF0F;
GPIOC->CRL |= 0x000000B0;
/* Configure Port D ethernet pins */
GPIOD->CRH &= 0xFFFFF000;
GPIOD->CRH |= 0x00000444;
#endif
ETH->DMABMR |= DBMR_SR;
while (ETH->DMABMR & DBMR_SR);
//到这里就进入了死循环 这是为啥啊。。。想不通。。。。
......
}
|
|