defin

Тактирование STM32F411RE на cmsis

2 posts in this topic

defin    0

Добрый день, имеется отладочная плата Nucleo-F411RE. Не получается настроить в CMSIS ногу PA8 для вывода частоты (MCO) с внутреннего генератора HSI. Через HAL все чётко работает. Из reference manual так и не понял как прописать источник тактирования для MCO. В инете полно примеров для F100 серии, для себя не могу их адаптировать.

RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN; // enable clock for port A

GPIOA->MODER |= GPIO_MODER_MODER8_0;

GPIOA->PUPDR &= ~GPIO_PUPDR_PUPD8_0;
GPIOA->PUPDR |= GPIO_PUPDR_PUPD8_1;
GPIOA->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR8_0 | GPIO_OSPEEDER_OSPEEDR8_1);
   
RCC->CFGR |= RCC_CFGR_SW_HSI; //вот здесь не знаю что писать, написал наугад

Тактирование по умолчанию от HSI

Share this post


Link to post
Share on other sites
snn_krs    58
15 hours ago, defin said:

GPIOA->MODER |= GPIO_MODER_MODER8_0;

Похоже здесь должно быть GPIOA->MODER |= GPIO_MODER_MODER8_1;

Это будет переключение выхода на альтернативную функцию. По сбросу в регистре альтернативных функций стоит 0 - что вам и нужно для МСО1

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By В гостях у Slime
      Здравствуйте, мне нужна помощь с подключением дисплея WG12864 к STM32F103C8T6. А именно? Я не нашёл библиотек для него, лишь только ардуиновские. Может у кого есть своя? С STM32 опыта почти нет. Так мигал светодиодом и всё, но зато ардуину я уже знаю всё. Я перерос её и мне хочется освоить стм.
    • By Mars36
      Доброго времени суток, второй день пытаюсь настроить отправку данных по UART для камня 407vg на плате discovery. Использую USART1 с ножками PB6(TX) и PB7(RX). Тактирование от внешнего кварца. Частота APB2 - 84MHz, соответственно BRR->0x222E.  При заливке прошивки в камень на ПК прилетает один мусорный байт и большей ничего не происходит, при ресете МК соответственно опять прилетает один мусорный байт. Пробовал подключать через USART2, там дела обстоят чуть лучше. Байты отправляются, но в виде мусора. Притом, отправлял разные символы(почти все цифры и буква алфавита) но код на терминали был либо 0xDF либо 0xFF.
      /******************************************************************************/ /* LYBRARY */ /******************************************************************************/ #include "stm32f4xx.h" /******************************************************************************/ /* USE FUNCTION */ /******************************************************************************/ void InitGPIO (void); void InitRCC(void); void InitUSART2(void); void delay (uint32_t time); /******************************************************************************/ /* MAIN */ /******************************************************************************/ int main (void){ InitGPIO (); InitRCC(); InitUSART2(); while (1){ GPIOD->BSRR |= GPIO_BSRR_BS15; while(!(USART1->SR & USART_SR_TC)); USART1->DR = 'h'; delay(200000000); GPIOD->BSRR |= GPIO_BSRR_BR15; delay(200000000); } } /******************************************************************************/ /* InitGPIO */ /******************************************************************************/ void InitUSART2(void){ RCC->APB2ENR |= RCC_APB2ENR_USART1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; GPIOB->MODER &= ~GPIO_MODER_MODER6_0; GPIOB->MODER |= GPIO_MODER_MODER6_1; GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR6; GPIOB->OTYPER &= ~GPIO_OTYPER_OT_6; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6; GPIOB->AFR[0] |= 0x00000700; GPIOB->MODER &= ~GPIO_MODER_MODER7; GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR7; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7; USART1->BRR = 0x0000222E; USART1->CR1 |= USART_CR1_UE; USART1->CR1 |= USART_CR1_TE; USART1->CR1 |= USART_CR1_RE; USART1->CR1 |= USART_CR1_RXNEIE; NVIC_EnableIRQ(USART1_IRQn); } void InitRCC(void){ RCC->CR |= ((uint32_t)RCC_CR_HSEON); while (!(RCC->CR & RCC_CR_HSERDY)); FLASH->ACR = (FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY| FLASH_ACR_ICEN | FLASH_ACR_DCEN); RCC->CFGR |= RCC_CFGR_HPRE_DIV1; RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; RCC->CFGR &= ~RCC_PLLCFGR_PLLSRC; RCC->CFGR &= ~RCC_PLLCFGR_PLLM; RCC->CFGR &= ~RCC_PLLCFGR_PLLN; RCC->CFGR &= ~RCC_PLLCFGR_PLLP; RCC->CFGR |= RCC_PLLCFGR_PLLSRC_HSE; RCC->CFGR |= RCC_PLLCFGR_PLLM_4; RCC->CFGR |= (RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLN_5 | RCC_PLLCFGR_PLLN_3); RCC->CR |= RCC_CR_PLLON; while((RCC->CR & RCC_CR_PLLRDY) == 0) {} RCC->CFGR &= ~RCC_CFGR_SW; RCC->CFGR |= RCC_CFGR_SW_PLL; while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} } void InitGPIO (void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; GPIOD->MODER |= GPIO_MODER_MODE15_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT15; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED15_0; GPIOD->MODER |= GPIO_MODER_MODE14_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT14; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED14_0; GPIOD->MODER |= GPIO_MODER_MODE13_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT13; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED13_0; GPIOD->MODER |= GPIO_MODER_MODE12_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT12; GPIOD->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR15_0; } void delay(uint32_t time){ uint32_t i; for (i=0; i<time;i++); }  

  • Сообщения

    • А вот это и называется "холодная война". Когда нет открытых военных действий, нет ни пуль, ни взрывчатки, а идеология, и план Даллеса- этого было бы достаточно для "не русских", а вот русских- даже этим не сломить!
      Сломили, как понимаю, уже давно Вас, сломили Марка, сломили ещё многих, а вот Котёнка- они не сломили, и ещё несколько миллионов.
      Есть ещё такое понятие, как генетическая память, так у меня она включилась, а у Вас- по всей видимости нет. Вы скорее всего не русский? Я вот патриот, а Вы- всяко предатель! Присягу кому давали?
      Пионерскую, комсомольскую, военную?   А это уже начнётся, буквально месяц- полтора. Мне вот жалко своих друзей, с кем на один горшок в д/с ходили. У двух из них жёны- судьи РФ.
      А под расстрел идут в первую очередь судьи, и их семьи. Да, сначала ФССП, и их семьи, а уже потом судьи.
    • Может быть, тиристор применить? Он вообще будет вечно работать.
    • Да, на форуме простых путей не ищут. Задачка решалась путём подбора трёх мощных токоограничивающих резисторов, без использования активных элементов. В итоге @Pavel Kostrov выбрал самый дорогой вариант, видимо у него он затруднений не вызывал. А можно было взять один мощный проволочный резистор 50 Вт, подобрать сопротивление в трёх вариантах, а потом заменить их на постоянные большой мощности, про миниатюризацию речи то не было. Лучше включить последовательно три резистора, и сдалать отводы. Да и самому из нихрома можно намотать один реостат с нужными отводами. При таких токах это был бы самый простой, надёжный и понятный, для начинающего, вариант.
    • Ох, сильна же наша Родина-Мать, Танки, крейсеры да добрый свинец,
      Только кто ж теперь пойдет воевать?!
      И, опять же, наступает...
    • Это сменные светофильтры. Часто применяются в сафитах
    • Вы даже до сих пор и не поняли, чего получит?
      ТЕРРИТОРИЮ!
      А пока мы тут- территорию они не могут получить. "Смуглянку" посмотрите, может осознаете, что именно СВОИХ?