Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #include "stm32f10x.h"
  2. #include "stm32f10x_gpio.h"
  3. #include "stm32f10x_rcc.h"
  4. #include "stm32f10x_usart.h"
  5. #include <stdio.h>
  6. #include "rc522.h"
  7.  
  8.  
  9. void send_to_uart(uint8_t data) {
  10. while(!(USART1->SR & USART_SR_TC));
  11. USART1->DR=data;
  12. }
  13.  
  14.  
  15. void send_str(char * string) {
  16. uint8_t i=0;
  17. while(string[i]) {
  18. send_to_uart(string[i]);
  19. i++;
  20. }
  21. send_to_uart('\r');
  22. send_to_uart('\n');
  23. }
  24.  
  25. void uart_init(){
  26. //uint8_t uart_data;
  27.  
  28. //Включаем тактированиеUART1
  29. RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE);
  30.  
  31. //создаем структуру для настройки портов
  32. GPIO_InitTypeDef gpio_port;
  33.  
  34. //настраиваем порт на как вход для UART(RxD)
  35. gpio_port.GPIO_Pin = GPIO_Pin_10;
  36. gpio_port.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  37. GPIO_Init(GPIOA, &gpio_port);
  38.  
  39. // настраиваем порт на выход UART(TxD)
  40. gpio_port.GPIO_Pin = GPIO_Pin_9;
  41. gpio_port.GPIO_Speed = GPIO_Speed_50MHz;
  42. gpio_port.GPIO_Mode = GPIO_Mode_AF_PP;
  43. GPIO_Init(GPIOA, &gpio_port);
  44.  
  45. //Настраивает сам модуль UARTa
  46. USART_InitTypeDef uart_struct;
  47. uart_struct.USART_BaudRate = 9600;
  48. uart_struct.USART_WordLength = USART_WordLength_8b;
  49. uart_struct.USART_StopBits = USART_StopBits_1;
  50. uart_struct.USART_Parity = USART_Parity_No ;
  51. uart_struct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  52. uart_struct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  53. // инициализируем UART
  54. USART_Init(USART1, &uart_struct);
  55. //включаем UART
  56. USART_Cmd(USART1, ENABLE);
  57. }
  58.  
  59. int main(void)
  60. { // char k;
  61.  
  62. unsigned char str[MAXRLEN];
  63. unsigned char status;
  64. uart_init(); // вызывем функцию инициализвции UART
  65. InitRc522(); // вызывем функцию инициализвции RC 522
  66. PcdAntennaOn();// включаем антенну RC 522
  67. send_str("Init Complete"); // посылаем строку
  68. // k=ReadRawRC(0x19);
  69. send_str("request");
  70. status=PcdRequest(PICC_REQIDL, str); // в принципе этот блок не обязателен , можно исключить.
  71. if (status == MI_OK){ // если модуль сообщит о готовности - выполним считываение.
  72. send_str("status OK");
  73. send_to_uart(str[0]);
  74. send_to_uart(str[1]);
  75. }else {
  76. send_str("status lose");
  77. }
  78.  
  79.  
  80.  
  81. status = PcdAnticoll(str); // теперь считываем инфу с карты
  82. if (status == MI_OK){ // если карта возле считывателя , модуль сообщит о нотовности и считвет данные.
  83. send_to_uart('C'); // использовалось как метка откуда начинается инфа с карты
  84. send_str(str);// информация считанная с модуля высылвется в UART
  85. }else {
  86. send_to_uart('R'); // если карты нет рапортуем об ощибке
  87. }
  88. // send_to_uart(status);
  89.  
  90.  
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement