Код: Выделить всё
void SPI_init(void)
{
// Òàêòèðîâàíèå àëüòåðíàòèâíûõ ôóíêöèé GPIO.
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
//âêëþ÷åíèå òàêòèðîâàíèÿ SPI1
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;
//íàñòðîéêà âûâîäîâ
//NSS -PA4 -out
GPIOB->CRL |=GPIO_CRL_MODE4;//áûò ÿâëÿåòñÿ âûõîäíûì ñ ÷àñòîòîé ïåðåêëþ÷åíèÿ 50 MHz
GPIOB->CRL &=~GPIO_CRL_CNF4;
GPIOB->CRL |=GPIO_CRL_CNF4_1;
//CLK -PA5 -out
GPIOB->CRL |=GPIO_CRL_MODE5;//áûò ÿâëÿåòñÿ âûõîäíûì ñ ÷àñòîòîé ïåðåêëþ÷åíèÿ 50 MHz
GPIOB->CRL &=~GPIO_CRL_CNF5;
GPIOB->CRL |=GPIO_CRL_CNF5_1;
//MISO -PA6 -in
GPIOB->CRL &=~GPIO_CRL_MODE6;
GPIOB->CRL &=~GPIO_CRL_CNF6;
GPIOB->CRL |=GPIO_CRL_CNF6_1;
//MOSI -PA7 -out
GPIOB->CRL |=GPIO_CRL_MODE7;//áûò ÿâëÿåòñÿ âûõîäíûì ñ ÷àñòîòîé ïåðåêëþ÷åíèÿ 50 MHz
GPIOB->CRL &=~GPIO_CRL_CNF7;
GPIOB->CRL |=GPIO_CRL_CNF7_1;
//íàñòðàèâàåì àëüòåíðíàòèâíûå ôóíêöèè ââîäîâ
AFIO->MAPR &=~AFIO_MAPR_SPI1_REMAP;
//buard detect
SPI1->CR1&=~SPI_CR1_BR_0;
SPI1->CR1&=~SPI_CR1_BR_1;
SPI1->CR1&=~SPI_CR1_BR_2;
//CHOL=1
SPI1->CR1|=SPI_CR1_CPOL;
//CPHA=1
SPI1->CR1|=SPI_CR1_CPHA;
//DFF
SPI1->CR1&=~SPI_CR1_DFF;
//íàïðàâëåíèå ñäâèãà
SPI1->CR1&=~SPI_CR1_LSBFIRST;
//óïðàâëåíèå íîãîé NSS
SPI1->CR1&=~SPI_CR1_SSM;
SPI1->CR2|=SPI_CR2_SSOE;
//âèä óñòðîéñòâà ìàñòåð
SPI1->CR1|=SPI_CR1_MSTR;
//ðàçðåøàåì ïðåðûâàíèÿ ïî ïðèåìó è ïåðåäà÷è
//SPI1->CR2|=SPI_CR2_TXEIE;
//SPI1->CR2|=SPI_CR2_RXNEIE;
//NVIC->ISER[1] |= ena_SPI1; // Ðàçðåøèòü ïðåðûâàíèå SPI1_IRQn â NVIC.
//çàïóñê SPI
SPI1->CR1|=SPI_CR1_SPE;
}Код: Выделить всё
void main(void)
{
//èíèöèëèçàöèÿ ÷àñòîòû ðàáîòû
SystemInit();
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
SPI_init();
SPI1->DR=0x45;
while(1)
{
tmp=SPI1->SR;
if((tmp&0x80) == SPI_SR_BSY)
{
tmp=SPI1->SR;
}
else
{
//++++++++++
tmp=SPI1->DR;
tmp=SPI1->SR;
//++++++++++
SPI1->DR=0x45;
tmp=SPI1->SR;
}
}но осцильником хочу посмотреть частоту и нечего(((( смотрел и другие пины. там тоже пусто.