Advertisement
Grzesiek1996

Untitled

Feb 20th, 2020
609
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stm32f10x.h"
  2.  
  3. int main(void)          //pętla główna programu
  4. {
  5.  GPIO_InitTypeDef gpio;     //definicja obiektu gpio będącego konfiguracją portów GPIO
  6.  I2C_InitTypeDef i2c;       //definicja obiektu i2c będącego modułem komunikacji I2C
  7.  
  8.  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE); //podłączenie zegara/ taktowanie portów A,B, C, D     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);   //uruchmienie zegara funkcji alternatyenych linii I/O
  9.  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
  10.  
  11.  GPIO_StructInit(&gpio);            //domyślna konfiguracja portu
  12.  gpio.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;     // konfiguracja pinów 6 i 7, czyli linii SCL, SDA
  13.  gpio.GPIO_Mode = GPIO_Mode_AF_OD;  // do trybu open-drain
  14.  gpio.GPIO_Speed = GPIO_Speed_50MHz;    //ustawienie prędkości linii na 50  [MHz]
  15.  GPIO_Init(GPIOB, &gpio);           //inicjalizacja modułu GPIOB, konfiguracja portu B
  16.  
  17.  I2C_StructInit(&i2c);      //domyślna konfiguracja modułu komunikacji I2C
  18.  i2c.I2C_Mode = I2C_Mode_I2C;   //ustawienie trybu komunikacji I2C
  19.  i2c.I2C_ClockSpeed = 100000;   //ustawienie szybkości komunikacji [100 kHz]
  20.  I2C_Init(I2C1, &i2c);      //inicjalizacja modułu INC1
  21.  I2C_Cmd(I2C1, ENABLE);     //uruchomienie interfejsu komunikacji I2C
  22.  
  23.  I2C_GenerateSTART(I2C1, ENABLE);
  24.  while (I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT) != SUCCESS);
  25.  
  26.  I2C_Send7bitAddress(I2C1, 0xa0, I2C_Direction_Transmitter);
  27.  while (I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) != SUCCESS);
  28.  
  29.  I2C_SendData(I2C1, 0x00);
  30.  while (I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTING) != SUCCESS);
  31.  
  32.  I2C_SendData(I2C1, 0xca);
  33.  while (I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTING) != SUCCESS);
  34.  
  35.  I2C_SendData(I2C1, 0xfe);
  36.  while (I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTING) != SUCCESS);
  37.  
  38.  I2C_GenerateSTOP(I2C1, ENABLE);
  39.  
  40.  while (1)
  41.  ;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement