Advertisement
edensheiko

stm32 gps system

Feb 4th, 2023
944
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.92 KB | Software | 0 0
  1. //BY EDEN SHEIKO BEFORE CHANGES
  2. #include "RTG.h"
  3.  
  4. char txF = ZERO, rxF = ZERO;
  5.  
  6. data_t data;
  7.  
  8. #define STRUCT_SIZE_DATA (sizeof(data))
  9.  
  10. void print_struct(data_t *ptr);
  11.  
  12. void rtg_main() {
  13.     while(TRUE){
  14.     receive_data();
  15.     update_data();
  16.     send_data();
  17.     }
  18. }
  19.  
  20. void send_data() {
  21.     HAL_StatusTypeDef status = HAL_OK;
  22.     int8_t buffer[STRUCT_SIZE_DATA];
  23.     memcpy(buffer,&data,STRUCT_SIZE_DATA);
  24.  
  25.     for (;;) {
  26.         printf("send_data\r\n");
  27.         status = HAL_UART_Transmit_IT(UART_4, buffer,STRUCT_SIZE_DATA);
  28.         if (status != HAL_OK) {
  29.             printf("Failed HAL_UART_Transmit: %d\n\r", status);
  30.         }
  31.         //while (HAL_UART_GetState(UART_4) != HAL_UART_STATE_READY);
  32.         //while (!txF);
  33.         //txF = 0;
  34.         return; //
  35.     }
  36. }
  37.  
  38. void receive_data() {
  39.     HAL_StatusTypeDef status = HAL_OK;
  40.     for (;;) {
  41.         printf("receive_data\r\n");
  42.         int8_t buffer[STRUCT_SIZE_DATA];
  43.         status = HAL_UART_Receive_IT(UART_4, buffer, STRUCT_SIZE_DATA);
  44.         if (status != HAL_OK) {
  45.             printf("Failed HAL_UART_recivie: %d\n\r", status);
  46.         }
  47.  
  48.         if(rxF){
  49.             HAL_UART_Receive_IT(UART_4, buffer, STRUCT_SIZE_DATA);
  50.             memcpy(&data,buffer,STRUCT_SIZE_DATA);
  51.             print_struct(&data);
  52.             return;
  53.             rxF = 0;
  54.         }
  55.  
  56.         HAL_Delay(500);
  57.     }
  58.  
  59.  
  60. }
  61.  
  62.  
  63. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { //got info good
  64.  
  65.     if (UART_4 == huart) {
  66.         HAL_GPIO_TogglePin (GPIOB, GPIO_PIN_14);
  67.         rxF = 1;
  68.     }
  69.  
  70. }
  71.  
  72.  
  73. void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { // send data good
  74.     if (UART_4 == huart) {
  75.         txF = 1;
  76.     } else {
  77.         UNUSED(huart);
  78.     }
  79. }
  80.  
  81. uint32_t RNG_GetRandomNumber(void)
  82. {
  83.   uint32_t random_number;
  84.   if (HAL_RNG_GenerateRandomNumber(&hrng, &random_number) != HAL_OK)
  85.   {
  86.       Error_Handler();
  87.   }
  88.   return random_number;
  89. }
  90.  
  91. void update_data() {
  92.     data.m_x = RNG_GetRandomNumber();
  93.     data.m_y = RNG_GetRandomNumber();
  94.  
  95. }
  96.  
  97. void print_struct(data_t *ptr) {
  98.     printf("Signal Received: %d\r\n", ptr->m_bit);
  99. }
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
Tags: STM STM32 ccode emb
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement