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