Advertisement
Domy131097

[LV2] Mikroračunalni sustavi

Mar 24th, 2018
170
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ////////////////////////////// Bez timera ////////////////////////////////////
  2.  
  3. /* Includes */
  4. #include <stddef.h>
  5. #include "stm32f10x.h"
  6. #include "stm32f10x_gpio.h"
  7. #include "stm32f10x_rcc.h"
  8.  
  9. void pauza(uint32_t vrijeme) {  //integer 32 bita (slicno kao unsigned int)
  10.     uint32_t counter;
  11.     counter = vrijeme;
  12.     while(counter > 0) counter--;
  13. }
  14.  
  15. int main(void)
  16. {
  17.     GPIO_InitTypeDef GPIO_InitStructure; //struktura za iznicijalizaciju određenog porta tipa GPIO
  18.  
  19.     /* Omoguci signal takta na GPIOC (na svih 16-bita) */
  20.     //potrebno ukljucit #include "stm32f10x_rcc.h"
  21.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //prvi parametar koji modul drugi sta zelimo omoguciti
  22.  
  23.     /* Inicijaliziraj port/bit PC13 kao izlazni */
  24.     GPIO_StructInit(&GPIO_InitStructure); //pozivanje funkcije GPIO strukture, postavlja na neke defaultne vrijednosti
  25.     // Mijenjamo defaultne vrijednosti u zeljene
  26.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //o kojemu pinu se radi
  27.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //push pull (s otpornikom gore)
  28.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //brzina
  29.     //Moramo navesti da se radi o C portu (GPIOC)
  30.     GPIO_Init(GPIOC, &GPIO_InitStructure); //pozivamo funkciju koja inicijalizira vrijednosti strukture na port C
  31.     // inicijalizacija zavrsena //
  32.  
  33.     while(1)
  34.     {
  35.         GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET); //koji port, koji pin, 0/bit_reset (slika s otpornikom), Palim
  36.         pauza(500000);
  37.         GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET); //gasim
  38.         pauza(500000);
  39.     }
  40.  
  41. }
  42.  
  43. //////////////////////////// S timerom ////////////////////////////////
  44.  
  45. /* Includes */
  46. #include <stddef.h>
  47. #include "stm32f10x.h"
  48. #include "stm32f10x_gpio.h"
  49. #include "stm32f10x_rcc.h"
  50.  
  51. volatile uint32_t MsCounter; //varijabla se svaki puta ucitava
  52.  
  53. void pauza(uint32_t vrijeme) {  //integer 32 bita (slicno kao unsigned int)
  54.     MsCounter = vrijeme;
  55.     while(MsCounter > 0) { }
  56.  
  57. }
  58.  
  59. int main(void)
  60. {
  61.     GPIO_InitTypeDef GPIO_InitStructure; //struktura za iznicijalizaciju određenog porta tipa GPIO
  62.  
  63.     /* Omoguci signal takta na GPIOC (na svih 16-bita) */
  64.     //potrebno ukljucit #include "stm32f10x_rcc.h"
  65.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //prvi parametar koji modul drugi sta zelimo omoguciti
  66.  
  67.     /* Inicijaliziraj port/bit PC13 kao izlazni */
  68.     GPIO_StructInit(&GPIO_InitStructure); //pozivanje funkcije GPIO strukture, postavlja na neke defaultne vrijednosti
  69.     // Mijenjamo defaultne vrijednosti u zeljene
  70.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //o kojemu pinu se radi
  71.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //push pull (s otpornikom gore)
  72.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //brzina
  73.     //Moramo navesti da se radi o C portu (GPIOC)
  74.     GPIO_Init(GPIOC, &GPIO_InitStructure); //pozivamo funkciju koja inicijalizira vrijednosti strukture na port C
  75.     // inicijalizacija zavrsena //
  76.  
  77.     /* Inicijalizacija sistemskog timera (SysTick) */
  78.     SysTick_Config(SystemCoreClock/1000); //ima jedan parametar (vrijeme jednog ticka), broji koji kaze koliko taktova treba za jednu sekundu, dijelimo s 1000 da dobijemo ms
  79.     //1 tick = 1ms
  80.  
  81.     while(1)
  82.     {
  83.         GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET); //koji port, koji pin, 0/bit_reset (slika s otpornikom), Palim
  84.         pauza(500);
  85.         GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET); //gasim
  86.         pauza(500);
  87.     }
  88.  
  89. }
  90.  
  91. //otvoriti dat stm32F1xx_it.c te u prozoru outline pritisnuti SysTick_Handler(void)
  92. //interupt
  93. extern volatile uint32_t MsCounter; //nemoj definirati ovdje nego ju koristi iz drugog modula (ne nelazi se def u ovoj datoteci vec se nalazi u nekoj drugoj u istom projektu)
  94.  
  95. void SysTick_Handler(void) //izvrsava se svake ms jer smo u glavnom programu tako namjestili
  96. {
  97.     if(MsCounter > 0) MsCounter--;
  98. }
Advertisement
RAW Paste Data Copied
Advertisement