Доброго времени суток.
Не могу запустить SPI2 на мк STM32f415.... зависает на функции отправки. Может глаза замылились... Не могу разобраться в чем дело.
|
Код:
|
void SPI2_init(void)
{
// RCC-›AHB1ENR |=RCC_AHB1ENR_GPIOAEN ;
RCC-›APB1ENR |=RCC_APB1ENR_SPI2EN ;
RCC-›AHB1ENR |=RCC_AHB1ENR_GPIOBEN; //GPIOB c
GPIOB-›MODER &= ~
(GPIO_MODER_MODER12 |
GPIO_MODER_MODER13 |
GPIO_MODER_MODER14 |
GPIO_MODER_MODER15
);
GPIOB-›MODER |=
GPIO_MODER_MODER12_0 |
GPIO_MODER_MODER13_1 |
GPIO_MODER_MODER14_1 |
GPIO_MODER_MODER15_1
;
GPIOB-›OTYPER &= ~
(GPIO_OTYPER_OT_12 |
GPIO_OTYPER_OT_13 |
GPIO_OTYPER_OT_14 |
GPIO_OTYPER_OT_15
);
GPIOB-›OSPEEDR &= ~
(GPIO_OSPEEDER_OSPEEDR12 |
GPIO_OSPEEDER_OSPEEDR13 |
GPIO_OSPEEDER_OSPEEDR14 |
GPIO_OSPEEDER_OSPEEDR15
);
GPIOB-›OSPEEDR |=
GPIO_OSPEEDER_OSPEEDR12_0 |
GPIO_OSPEEDER_OSPEEDR13_0 |
GPIO_OSPEEDER_OSPEEDR14_0 |
GPIO_OSPEEDER_OSPEEDR15_0
;
GPIOB-›PUPDR &= ~
(GPIO_PUPDR_PUPDR12 |
GPIO_PUPDR_PUPDR13 |
GPIO_PUPDR_PUPDR14 |
GPIO_PUPDR_PUPDR15);
//10 2
GPIOB-›AFR[1] |= (5 ‹‹ 4*5) | (5 ‹‹ 4*6) | (5 ‹‹ 4*7);//включаем ольтернативную функцию 5 на порты 13 14 15..
SPI2-›CR1 |=
SPI_CR1_BR_0 | //
SPI_CR1_BR_1 |
SPI_CR1_BR_2 |
SPI_CR1_MSTR |
SPI_CR1_SSI |
SPI_CR1_SSM
;
SPI2-›CR1 |= SPI_CR1_SPE;
NVIC_SetPriority (SPI2_IRQn, 8);
NVIC_EnableIRQ(SPI2_IRQn);
}
uint8_t SPI2_send(uint8_t data)
{
SPI1-›DR=data;
while(!(SPI2-›SR & SPI_SR_RXNE)){}
return SPI2-›DR;
} |
Может кто заметит ошибку.
Заранее спасибо.