Zase STM32

Fanda Kopriva info na elektronikavyvoj.cz
Neděle Listopad 29 13:21:46 CET 2020


dobry den
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?
>
> Díky,
>
> PH
>
>
> _______________________________________________
> 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/cf5dbb9c/attachment.html>


Další informace o konferenci Hw-list