Zase STM32
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Neděle Listopad 29 20:22:09 CET 2020
Tak ted se mi zda, ze prece jen aspon pro prvni pokusy je dobre pouzit
konfigurator a HAL - naklika se to, spusti se timer a jede to... Postup
spusteni je primo soucasti zdrojaku kdyz nekdo nechce hledat.
Dne 29.11.2020 v 20:16 Fanda Kopriva napsal(a):
> posilam soukromne tak to snad dojde
> fanda
>
> Dne 29. 11. 2020 v 19:43 Pavel Hudecek napsal(a):
>>
>> Mohl bych poprosit o zaslání .h ve kteém jsou ty registry
>> STM32F030K6T6 zadefinovaný?
>>
>> Stáhnul jsem několik takových fajlů a nefunguje ani jedno ani druhý
>>
>> TIM3_CCR0 = val;
>>
>> TIM3->CCR0 = val;
>>
>> Zajímavý je, že je v nich nadefinovaných spousta věcí, jako TIM1_...,
>> nebo TIM17_... takže třeba s TIM1 by mi to tak šlo, ale k TIM3 je tam
>> jen BASE.
>>
>> Díky,
>>
>> PH
>>
>> *Od: *Fanda Kopriva <mailto:info na elektronikavyvoj.cz>
>>
>> s STM32F030K6T6 jsem delal pro kamarada nastavovani modelarskeho
>> serva opakovacka 20 ms a pulz 1-2ms
>>
>> void motor(char co)
>> {
>> unsigned int pwmx;
>> switch (co) {
>> case 'I':
>> RCC_APB1ENR |=2; //servo inicializace
>> GPIOB_MODER |= 0x00000008; //port pb1
>> GPIOB_AFRL |= 0x00000010;
>> TIM3_CR1 = 0x1;
>> TIM3_CCMR2_Output = 0x7000;
>> TIM3_CCR4 = 0; //togle
>> TIM3_CCER = 0x3000; //11
>> TIM3_CNT = 0;
>> TIM3_PSC = 7; //1us
>> TIM3_ARR = 20000; //20ms
>> TIM3_CR1 = 0x1; //43
>> TIM3_CCR4 = 1000; //1.5ms
>> break;
>> case 'P':
>> pwmx = servo * 50 + 1000; //servo nastaveni
>> if (pwmx>2000) pwmx=2000;
>> TIM3_CCR4 = pwmx;
>> break;
>> case 'S':TIM3_CCR4 = 1000; //1.5ms servo stop
>> break;
>> }
>> }
>>
>> jeste priklad pro stm32f446 -
>>
>> #define enc1 0 //pc7 T3ch2
>> #define enc2 0 //pc8 T3ch3
>>
>> void encod(unsigned char co){
>> if (co=='I') { //inicializace
>> GPIOC_MODER &= 0xfffc3fff;
>> GPIOC_MODER |= 0x00028000;
>> GPIOC_AFRH |= 0x00000002;
>> GPIOC_AFRL |= 0x20000000;
>> GPIOC_OSPEEDR |=0x00028000;
>> RCC_APB1ENR |= 0x2; //tim3 168/4 42MHz
>> TIM3_CR1 = 0x81;
>> TIM3_CCMR1_Output = 0x7000;
>> TIM3_CCMR2_Output = 0x0070;
>> TIM3_CCER = 0x0110;
>> TIM3_CNT = 0;
>> TIM3_PSC = 0;
>> TIM3_ARR = 20000;
>> TIM3_CCR2 = 10000;
>> TIM3_CCR3 = 10000;
>> TIM3_CR1 = 0x81; //zisk ad603 pwm1 ch1
>> }
>>
>> if (co=='P') { //nastaveni
>>
>> if (laserA>18000) pwmx=18000; else pwmx=18000 - laserA;
>> TIM1_CCR2 = pwmx;
>> if (laserB>18000) pwmx=18000; else pwmx=18000 - laserB;
>> TIM1_CCR3 = pwmx;
>> }
>> }
>>
>> mam tady jeste priklad pro stm32f427 -
>>
>> //#define laspwm 0x200 //d14 T4ch3
>> //#define pwina // d12 T4ch1 //zisk
>> //#define pwin // d13 T4ch2
>>
>> unsigned int laseron ;
>> void laser(unsigned char co)
>> {
>> signed int laspoz;
>> switch (co) {
>> case 'I':
>> GPIOD_MODER &= 0xc0FFFFFF;
>> GPIOD_MODER |= 0x2a000000;
>> GPIOD_AFRH |= 0x02220000;
>> RCC_APB1ENR |= 0x4;
>> TIM4_CR1 = 0x1;
>> TIM4_CCMR2_Output = 0x70;
>> TIM4_CCMR1_Output = 0x7070;
>> TIM4_CCER = 0x0111; //11
>> TIM4_CNT = 0;
>> TIM4_PSC = 10;
>> TIM4_ARR = 256;
>> TIM4_CCR3 = 255;
>> TIM4_CR1 = 0x1; //zisk ad603 pwm1 ch1 unsigned int
>> lasset,lasproud,maxlaser;
>> break;
>> case 'P':
>> TIM4_CCR3 = laserproud;
>>
>> TIM4_CCR2 = zisk;
>> TIM4_CCR1 = ziska;
>> break;
>> }
>> }
>>
>> fanda
>>
>> Dne 29. 11. 2020 v 11:15 Pavel Hudecek napsal(a):
>>
>> Dobrý den všem,
>>
>> Trápím se tady s STM32F030K6T6, k PC připojeno přes STM32F0308
>> discovery, Cube IDE.
>>
>> 1. Jak udělat, aby program běžel i po disconnect?
>>
>> 2. Nedaří se mi zprovoznit PWM. Byla by nějaká ukázka, nejlépe
>> pro TIM3?
>>
>>
>> _______________________________________________
>> HW-list mailing list - sponsored bywww.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20201129/31137133/attachment-0001.html>
Další informace o konferenci Hw-list