Re: Programování STM32

Tomas Urbanek turbyho na gmail.com
Středa Říjen 2 11:07:07 CEST 2019


Tak jsem na to koukal a hotove konfigurace arduina pro STM32 pouzivaji nasledujici konfigurace hodin. Co jste na zkousku pouzili za core/variantu netusim.

core od Rogera Clarka - zde zalezi jak je setnuto USE_HSI_CLOCK

STM32F1

        static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL};
#if !USE_HSI_CLOCK
        __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data};
#else
        __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data};
#endif
        __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6;
        __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5;

        __weak void board_reset_pll(void) {
            // TODO
        }

        __weak void board_setup_clock_prescalers(void) {
            rcc_set_prescaler(RCC_PRESCALER_AHB, RCC_AHB_SYSCLK_DIV_1);
            rcc_set_prescaler(RCC_PRESCALER_APB1, RCC_APB1_HCLK_DIV_2);
            rcc_set_prescaler(RCC_PRESCALER_APB2, RCC_APB2_HCLK_DIV_1);
			rcc_clk_disable(RCC_USB);
			#if F_CPU == 72000000
			rcc_set_prescaler(RCC_PRESCALER_USB, RCC_USB_SYSCLK_DIV_1_5);
			#elif F_CPU == 48000000
			rcc_set_prescaler(RCC_PRESCALER_USB, RCC_USB_SYSCLK_DIV_1);			
			#endif			
        }



core od ST

NUCLEO_F103RB pouziva HSI

  /* Initializes the CPU, AHB and APB busses clocks */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = 16;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;

  /* Initializes the CPU, AHB and APB busses clocks */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
                                | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;


MAPLEMINI_F103CB pouziva HSE

 /* Initializes the CPU, AHB and APB busses clocks */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;

  /* Initializes the CPU, AHB and APB busses clocks */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
                                | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;


T



> On 1 Oct 2019, at 13:58, Turbyho <turbyho na gmail.com> wrote:
> 
> Jenze stm arduino pouziva, mlhave tusim, defautne interni hodiny. A pokud nastavite externi spatne nebo je neco blbe na X/C tak se to ani nerozebehne. Respektive rozbehne, ale jen dokud se neprepnou hodiny. Takze usuzovat, ze kdyz to bezelo s kodem z stm arduina a ze je tudiz cele ok az tak moc nejde. 
> 
> T
> 
> 1. 10. 2019 v 13:48, <cizek.milan na seznam.cz> <cizek.milan na seznam.cz>:
> 
>> Ahoj, děkuji všem za rady. Objednal jsem si tedy Nucleo se stejnou řadou cpu.
>> Dále budeme laborovat s našim výtvorem dle vašich rad. Ono víme, že HW je cca v pořádku a naprogramovat má jít (klukům se podařilo do něj něco vlastního nalít z ArduinoIDE).
>> Podle mého je to tedy fakt o nějakém nastavení. Zkusím ještě ten STLINK SW + hex a zaměřit se na BOOT propojky. Díky všem.
>> M.
>>  
>> From: Hw-list <hw-list-bounces na list.hw.cz> On Behalf Of Turbyho
>> Sent: Monday, September 30, 2019 1:10 AM
>> To: HW-news <hw-list na list.hw.cz>
>> Subject: Re: Programování STM32
>>  
>> Tohle bude slozite :) Ja byt tebou, tak bych vzal v prvni rade discovery/nucleo s mcu nejlepe stejne rady (urcite funkcni hw) a naucim se do toho v prve rade nahrat nejaky vlastnorucne prelozeny demo kod od stm. Pak bych se s tim naucil debugovat. A az tohle zvladnes, muzes si naklikat svou konfiguraci disco/nuclea a uvidis co to udela. Az tohle zvladnes a bude ti to fungovat, muzes zkusit svuj hw. 
>>  
>> Cinske klony st-linku netusim jestli funguji se vsemi radami mcu. ST ted prodava mini verzi st-linku v3 za par stovek a 100% funguje. Nebo koupim nucleo, na kterem je st-link v2 taky “v cene”. Nebo kdyz to myslim vazne, tak ten “litr a kousek” za dospely st-link v3 vysolim a nepremyslim.
>>  
>> T
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list