gpio.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /****************************gpio.c*********************************/
  2. // http://microtechnics.ru/stm32-uchebnyj-kurs-gpio-porty-vvoda-vyvoda/
  3. //Подключаем все нужные файлы
  4. #include "stm32f10x.h"
  5. #include "stm32f10x_rcc.h"
  6. #include "stm32f10x_gpio.h"
  7. /*******************************************************************/
  8. //Тут будет вся инициализация всей использующейся периферии
  9. void initAll()
  10. {
  11. //Объявляем переменную port типа GPIO_InitTypeDef
  12. GPIO_InitTypeDef port;
  13. //Это функция из файла stm32f10x_rcc.c, включает тактирование на GPIOA
  14. //GPIOA сидит на шине APB2
  15. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  16. //Про эту функцию напишу чуть ниже
  17. GPIO_StructInit(&port);
  18. //Заполняем поля структуры нужными значениями
  19. //Первый вывод – вход для обработки нажатия кнопки – PA1
  20. port.GPIO_Mode = GPIO_Mode_IPD;
  21. port.GPIO_Pin = GPIO_Pin_1;
  22. port.GPIO_Speed = GPIO_Speed_2MHz;
  23. //А про эту функцию мы уже говорили
  24. //Отметим только что один из параметров – указатель(!) на
  25. //нашу структуру
  26. GPIO_Init(GPIOA, &port);
  27. //Настраиваем вывод, на котором будет висеть диодик – PA0
  28. port.GPIO_Mode = GPIO_Mode_Out_PP;
  29. port.GPIO_Pin = GPIO_Pin_0;
  30. port.GPIO_Speed = GPIO_Speed_2MHz;
  31. GPIO_Init(GPIOA, &port);
  32. }
  33. /*******************************************************************/
  34. int main()
  35. {
  36. //Объявляем переменную для хранения состояния кнопки
  37. uint8_t buttonState = 0;
  38. initAll();
  39. while(1)
  40. {
  41. //С помощью функции из SPL считываем из внешнего мира
  42. //состояние кнопки
  43. buttonState = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
  44. if (buttonState == 1)
  45. {
  46. GPIO_SetBits(GPIOA, GPIO_Pin_0);
  47. }
  48. else
  49. {
  50. GPIO_ResetBits(GPIOA, GPIO_Pin_0);
  51. }
  52. }
  53. }
  54. /****************************End of file****************************/