Advertisement
Domy131097

Leni i Šangut

Jun 30th, 2018
148
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stddef.h>
  2. #include "stm32f10x.h"
  3. #include "stm32f10x_rcc.h"
  4. #include "stm32f10x_gpio.h"
  5. #include "stm32f10x_usart.h"
  6.  
  7. void usart_init(void);
  8. void usart_send(const char chr);
  9. void print_f(const char *s, ...);
  10.  
  11. int getchar(void);
  12. int putchar(int c);
  13. void putString(char *string);
  14.  
  15. int znak;
  16.  
  17. int main(void)
  18. {
  19. //Inicijalizacija USART1
  20. usart_init();
  21.  
  22. //Ciklički dio
  23. while (1)
  24. {
  25. znak = getchar();
  26. if(znak==-1)continue;
  27. putchar(znak);
  28.  
  29. switch(znak){
  30. case 'p' :
  31. case 'P' : {
  32. GPIO_WriteBit(GPIOB, GPIO_Pin_0, SET);
  33. print_f("Upaljeno");
  34. break;
  35. }
  36.  
  37. case 'g' :
  38. case 'G' : {
  39. GPIO_WriteBit(GPIOB, GPIO_Pin_0, RESET);
  40. print_f("Ugaseno");
  41. break;
  42. }
  43.  
  44. default : break;
  45. }
  46. }
  47. }
  48.  
  49. void usart_init(void) {
  50. GPIO_InitTypeDef GPIO_InitStruct;
  51. USART_InitTypeDef USART_InitStruct;
  52.  
  53. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO, ENABLE);
  54.  
  55. //1-inicijalizacija PBO za LED
  56. GPIO_StructInit(&GPIO_InitStruct);
  57. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
  58. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  59. GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
  60. GPIO_Write(GPIOB, 0xFFFF);
  61. GPIO_Init(GPIOB, &GPIO_InitStruct);
  62.  
  63. //Inicijalizacija Tx pina (GPIOA, GPIO_Pin_9)
  64. GPIO_StructInit(&GPIO_InitStruct);
  65. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
  66. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
  67. GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
  68. GPIO_Init(GPIOA, &GPIO_InitStruct);
  69.  
  70. //Inicijalizacija Rx pina (GPIOA, GPIO_Pin_10)
  71. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
  72. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  73. GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
  74. GPIO_Init(GPIOA, &GPIO_InitStruct);
  75.  
  76. //komunikacijski parametri USART1
  77. USART_StructInit(&USART_InitStruct);
  78. USART_InitStruct.USART_BaudRate = 9600;
  79. USART_InitStruct.USART_WordLength = USART_WordLength_8b;
  80. USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  81. USART_InitStruct.USART_Parity = USART_Parity_No;
  82. USART_InitStruct.USART_StopBits = USART_StopBits_1;
  83. USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  84. USART_Init(USART1, &USART_InitStruct);
  85.  
  86. USART_Cmd(USART1, ENABLE);
  87.  
  88. }
  89.  
  90. // Šalje jedan bit kroz USART
  91. void usart_send(const char chr) {
  92. while(!(USART1->SR & USART_SR_TC));
  93. USART1->DR = chr;
  94. }
  95.  
  96. // Šalje string kroz USART
  97. void print_f(const char *s, ...) {
  98. int i=0;
  99. while (s[i]) {
  100. usart_send(s[i++]);
  101. }
  102. }
  103.  
  104.  
  105. int getchar(void){
  106. if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET){
  107. return USART1->DR & 0xff;
  108. }else{
  109. return -1;
  110. }
  111. }
  112.  
  113. int putchar(int c){
  114. while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  115. USART1->DR = c & 0xff;
  116.  
  117. return 0;
  118. }
  119.  
  120. void putString(char *string){
  121.  
  122. }
Advertisement
RAW Paste Data Copied
Advertisement