Advertisement
Guest User

Untitled

a guest
May 27th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.17 KB | None | 0 0
  1. #include "main_base.h"
  2.  
  3. int x = 120, y = 160, dx = 1, dy = 1;
  4. unsigned int pomiar;
  5.  
  6. void move_square_asm();
  7. unsigned short int RGB16Pack(unsigned char,unsigned char,unsigned char);
  8.  
  9. void move_square_C()
  10. {
  11.         x=pomiar;
  12.         //y+=dy;
  13.         //if (x <= 1 || x >= 240 - 34)
  14.         //  pomiar = -pomiar;
  15.         //if (y <= 1 || y >= 320 - 34)
  16.             //dy = -dy;
  17. }
  18.  
  19. int main(void) {
  20.     HAL_Init();
  21.     SystemClock_Config();
  22.     BSP_SDRAM_Init();
  23.     LCD_Config();
  24.  
  25.  
  26.         RCC->APB2ENR|=RCC_APB2ENR_TIM1EN;
  27.         GPIOA->AFR[1]|= 1 << (0*4); // 1 - Tim2_CH1 //funkcja alternatywna wejsc (AFR), bo port moze byc i/o/adc/enkoder/inne alternatywne
  28.         GPIOA->AFR[1]|= 1 << (1*4); // 1 - Tim2_CH2
  29.         GPIOA->MODER |= GPIO_Mode_AF << (8*2);
  30.         GPIOA->MODER |= GPIO_Mode_AF << (9*2); //bylo gpiob
  31.         GPIOA->PUPDR |= GPIO_PuPd_UP << (8*2);
  32.         GPIOA->PUPDR |= GPIO_PuPd_UP << (9*2); //bylo gpiob
  33.         TIM1->PSC=0; // Brak preskalera
  34.         TIM1->CNT=16; // Pocz¹tkowy stan licznika
  35.         TIM1->SMCR=1; // Wybór trybu pracy enkodera
  36.         TIM1->CCMR1=0x3232; /* CCxS bits = 01 - Ustawia kana³y
  37.         CH1 i CH2 do pracy wejœciowej (CAPTURE) ICxF bits = 3 -
  38.         ustawia rozmiar okna filtru wejœciowego */ //jeszcze go skonfigurowac?
  39.         TIM1->ARR=32; // Rejestr prze³adowania stanu licznika
  40.         TIM1->CR1=1; // Odblokowuje licznik
  41.         //pomiar=TIM1->CNT;
  42.  
  43.  
  44.     while (1)
  45.     {
  46.         pomiar=TIM1->CNT;
  47.     Clear_And_Reload_Screen();
  48.  
  49.     #ifdef  ASM_EXMPL
  50.         move_square_asm();
  51.     #else
  52.         move_square_C();
  53.     #endif
  54.  
  55.     for (int yy = 0; yy < 32; yy++)
  56.     {
  57.         unsigned short int *pixel = (unsigned short int*) (LCD_BUF + x + (y + yy) * 240);
  58.  
  59.         for (int xx = 0; xx < 32; xx++)
  60.         {
  61.             #ifdef  ASM_EXMPL
  62.             *pixel++ =   RGB16Pack(y >> 4, (xx + (((240 - x)) * (32 - yy) / 240)+x * yy / 240), 31 - (x >> 4));
  63.             #else
  64.                 *pixel++ =      ((31 - ((x >> 4) & 0x1f)) << 11) | (((xx + (((240 - x)) * (32 - yy) / 240) + x * yy / 240) & 0x3f) << 5) | (((y >> 4) & 0x1f) << 0);
  65.             #endif
  66.         }
  67.     }
  68.  
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement