ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
557537 Топик полностью
Apтём (04.11.2014 16:17, просмотров: 124) ответил Vit на Не вижу как минимум включения тактирования SPI, DMA и GPIO, настройку пинов на AF
Это всё наличиствует - не привёл просто, ибо много букв будет.  static INLINE void EnablePeripheralClock() { RCC->APB2ENR|=0 | RCC_APB2ENR_TIM1EN | RCC_APB2ENR_SPI1EN ; RCC->APB1ENR|=0 |RCC_APB1ENR_SPI3EN ; RCC->AHB1ENR|=RCC_AHB1ENR_DMA2EN; } typedef Pin<'A', 5, 'H', PIN_SPEED_100MHZ> LCLK; typedef Pin<'A', 7, 'H', PIN_SPEED_100MHZ> LMOSI; typedef Pin<'E', 7> LCLK_IN; typedef Pin<'E', 9, 'H', PIN_SPEED_100MHZ> LE; typedef Pin<'E', 11, 'L', PIN_SPEED_100MHZ> LED_CS0; typedef Pin<'E', 12, 'L', PIN_SPEED_100MHZ> LED_CS1; typedef Pin<'E', 13, 'L', PIN_SPEED_100MHZ> LED_CS2; typedef Pin<'E', 14, 'L', PIN_SPEED_100MHZ> LED_CS3; INLINE static void InitLedIO() { LCLK_IN::Mode(ALT_INPUT); LCLK_IN::Alternate(ALT_FUNC_TIM1); LCLK::Mode(ALT_OUTPUT); LCLK::Alternate(ALT_FUNC_SPI1); LCLK::SetSpeed(PIN_SPEED_100MHZ); LMOSI::Mode(ALT_OUTPUT); LMOSI::Alternate(ALT_FUNC_SPI1); LMOSI::SetSpeed(PIN_SPEED_100MHZ); LED_CS0::Mode(OUTPUT); LED_CS0::SetSpeed(PIN_SPEED_100MHZ); LED_CS0::Off(); LED_CS1::Mode(OUTPUT); LED_CS1::SetSpeed(PIN_SPEED_100MHZ); LED_CS1::Off(); LED_CS2::Mode(OUTPUT); LED_CS2::SetSpeed(PIN_SPEED_100MHZ); LED_CS2::Off(); LED_CS3::Mode(OUTPUT); LED_CS3::SetSpeed(PIN_SPEED_100MHZ); LED_CS3::Off(); #if (TIMER_OUTPUT_ENABLED==0) LE::Mode(OUTPUT); LE::Off(); #else LE::Mode(ALT_OUTPUT); LE::Alternate(ALT_FUNC_TIM1); #endif } INLINE static void InitLedSpi() { SPI1->CR1=0 | SPI_CR1_DFF | SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0 | SPI_CR1_SPE | SPI_CR1_MSTR ; SPI1->CR2=0; } Если SPI1 программно запускать - то всё работает. По ДМА не получается. Где-то не так его настроил. Не могу понять где именно.