Reads analog A0 AND A2 and transmit them thorugh lora (no encryption)

Dependencies:   BufferedSerial SX1276GenericLib mbed

Committer:
gabrio
Date:
Thu May 31 13:13:41 2018 +0000
Revision:
5:2ac61718bfd8
Parent:
2:5ddb3de762a0

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gabrio 0:acd8e2ba10c5 1 /*
gabrio 2:5ddb3de762a0 2 *
gabrio 2:5ddb3de762a0 3 * Author Be-P, Gabrio Tognozzi
gabrio 2:5ddb3de762a0 4 * Pervasive systems 2018
gabrio 2:5ddb3de762a0 5 *
gabrio 2:5ddb3de762a0 6 * Credits:
gabrio 0:acd8e2ba10c5 7 * Copyright (c) 2017 Helmut Tschemernjak
gabrio 0:acd8e2ba10c5 8 * 30826 Garbsen (Hannover) Germany
gabrio 2:5ddb3de762a0 9 *
gabrio 0:acd8e2ba10c5 10 * Licensed under the Apache License, Version 2.0);
gabrio 0:acd8e2ba10c5 11 */
gabrio 0:acd8e2ba10c5 12 #include "main.h"
gabrio 0:acd8e2ba10c5 13
gabrio 0:acd8e2ba10c5 14 DigitalOut myled(LED1);
gabrio 0:acd8e2ba10c5 15 BufferedSerial *ser;
gabrio 0:acd8e2ba10c5 16
gabrio 0:acd8e2ba10c5 17 int main() {
gabrio 0:acd8e2ba10c5 18 SystemClock_Config();
gabrio 0:acd8e2ba10c5 19 ser = new BufferedSerial(USBTX, USBRX);
gabrio 0:acd8e2ba10c5 20 ser->baud(115200*2);
gabrio 0:acd8e2ba10c5 21 ser->format(8);
gabrio 0:acd8e2ba10c5 22 ser->printf("Hello World\n\r");
gabrio 0:acd8e2ba10c5 23 myled = 1;
gabrio 0:acd8e2ba10c5 24
gabrio 0:acd8e2ba10c5 25 Transmitter();
gabrio 0:acd8e2ba10c5 26 }
gabrio 0:acd8e2ba10c5 27
gabrio 0:acd8e2ba10c5 28
gabrio 0:acd8e2ba10c5 29
gabrio 0:acd8e2ba10c5 30
gabrio 0:acd8e2ba10c5 31 void SystemClock_Config(void)
gabrio 0:acd8e2ba10c5 32 {
gabrio 0:acd8e2ba10c5 33 #ifdef B_L072Z_LRWAN1_LORA
gabrio 0:acd8e2ba10c5 34 /*
gabrio 0:acd8e2ba10c5 35 * The L072Z_LRWAN1_LORA clock setup is somewhat differnt from the Nucleo board.
gabrio 0:acd8e2ba10c5 36 * It has no LSE.
gabrio 0:acd8e2ba10c5 37 */
gabrio 0:acd8e2ba10c5 38 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
gabrio 0:acd8e2ba10c5 39 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
gabrio 0:acd8e2ba10c5 40
gabrio 0:acd8e2ba10c5 41 /* Enable HSE Oscillator and Activate PLL with HSE as source */
gabrio 0:acd8e2ba10c5 42 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
gabrio 0:acd8e2ba10c5 43 RCC_OscInitStruct.HSEState = RCC_HSE_OFF;
gabrio 0:acd8e2ba10c5 44 RCC_OscInitStruct.HSIState = RCC_HSI_ON;
gabrio 0:acd8e2ba10c5 45 RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
gabrio 0:acd8e2ba10c5 46 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
gabrio 0:acd8e2ba10c5 47 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
gabrio 0:acd8e2ba10c5 48 RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_6;
gabrio 0:acd8e2ba10c5 49 RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_3;
gabrio 0:acd8e2ba10c5 50
gabrio 0:acd8e2ba10c5 51 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
gabrio 0:acd8e2ba10c5 52 // Error_Handler();
gabrio 0:acd8e2ba10c5 53 }
gabrio 0:acd8e2ba10c5 54
gabrio 0:acd8e2ba10c5 55 /* Set Voltage scale1 as MCU will run at 32MHz */
gabrio 0:acd8e2ba10c5 56 __HAL_RCC_PWR_CLK_ENABLE();
gabrio 0:acd8e2ba10c5 57 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
gabrio 0:acd8e2ba10c5 58
gabrio 0:acd8e2ba10c5 59 /* Poll VOSF bit of in PWR_CSR. Wait until it is reset to 0 */
gabrio 0:acd8e2ba10c5 60 while (__HAL_PWR_GET_FLAG(PWR_FLAG_VOS) != RESET) {};
gabrio 0:acd8e2ba10c5 61
gabrio 0:acd8e2ba10c5 62 /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
gabrio 0:acd8e2ba10c5 63 clocks dividers */
gabrio 0:acd8e2ba10c5 64 RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
gabrio 0:acd8e2ba10c5 65 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
gabrio 0:acd8e2ba10c5 66 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
gabrio 0:acd8e2ba10c5 67 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
gabrio 0:acd8e2ba10c5 68 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
gabrio 0:acd8e2ba10c5 69 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
gabrio 0:acd8e2ba10c5 70 // Error_Handler();
gabrio 0:acd8e2ba10c5 71 }
gabrio 0:acd8e2ba10c5 72 #endif
gabrio 0:acd8e2ba10c5 73 }
gabrio 0:acd8e2ba10c5 74
gabrio 0:acd8e2ba10c5 75 void dump(const char *title, const void *data, int len, bool dwords)
gabrio 0:acd8e2ba10c5 76 {
gabrio 0:acd8e2ba10c5 77 dprintf("dump(\"%s\", 0x%x, %d bytes)", title, data, len);
gabrio 0:acd8e2ba10c5 78
gabrio 0:acd8e2ba10c5 79 int i, j, cnt;
gabrio 0:acd8e2ba10c5 80 unsigned char *u;
gabrio 0:acd8e2ba10c5 81 const int width = 16;
gabrio 0:acd8e2ba10c5 82 const int seppos = 7;
gabrio 0:acd8e2ba10c5 83
gabrio 0:acd8e2ba10c5 84 cnt = 0;
gabrio 0:acd8e2ba10c5 85 u = (unsigned char *)data;
gabrio 0:acd8e2ba10c5 86 while (len > 0) {
gabrio 0:acd8e2ba10c5 87 ser->printf("%08x: ", (unsigned int)data + cnt);
gabrio 0:acd8e2ba10c5 88 if (dwords) {
gabrio 0:acd8e2ba10c5 89 unsigned int *ip = ( unsigned int *)u;
gabrio 0:acd8e2ba10c5 90 ser->printf(" 0x%08x\r\n", *ip);
gabrio 0:acd8e2ba10c5 91 u+= 4;
gabrio 0:acd8e2ba10c5 92 len -= 4;
gabrio 0:acd8e2ba10c5 93 cnt += 4;
gabrio 0:acd8e2ba10c5 94 continue;
gabrio 0:acd8e2ba10c5 95 }
gabrio 0:acd8e2ba10c5 96 cnt += width;
gabrio 0:acd8e2ba10c5 97 j = len < width ? len : width;
gabrio 0:acd8e2ba10c5 98 for (i = 0; i < j; i++) {
gabrio 0:acd8e2ba10c5 99 ser->printf("%2.2x ", *(u + i));
gabrio 0:acd8e2ba10c5 100 if (i == seppos)
gabrio 0:acd8e2ba10c5 101 ser->putc(' ');
gabrio 0:acd8e2ba10c5 102 }
gabrio 0:acd8e2ba10c5 103 ser->putc(' ');
gabrio 0:acd8e2ba10c5 104 if (j < width) {
gabrio 0:acd8e2ba10c5 105 i = width - j;
gabrio 0:acd8e2ba10c5 106 if (i > seppos + 1)
gabrio 0:acd8e2ba10c5 107 ser->putc(' ');
gabrio 0:acd8e2ba10c5 108 while (i--) {
gabrio 0:acd8e2ba10c5 109 printf("%s", " ");
gabrio 0:acd8e2ba10c5 110 }
gabrio 0:acd8e2ba10c5 111 }
gabrio 0:acd8e2ba10c5 112 for (i = 0; i < j; i++) {
gabrio 0:acd8e2ba10c5 113 int c = *(u + i);
gabrio 0:acd8e2ba10c5 114 if (c >= ' ' && c <= '~')
gabrio 0:acd8e2ba10c5 115 ser->putc(c);
gabrio 0:acd8e2ba10c5 116 else
gabrio 0:acd8e2ba10c5 117 ser->putc('.');
gabrio 0:acd8e2ba10c5 118 if (i == seppos)
gabrio 0:acd8e2ba10c5 119 ser->putc(' ');
gabrio 0:acd8e2ba10c5 120 }
gabrio 0:acd8e2ba10c5 121 len -= width;
gabrio 0:acd8e2ba10c5 122 u += width;
gabrio 0:acd8e2ba10c5 123 ser->printf("\r\n");
gabrio 0:acd8e2ba10c5 124 }
gabrio 0:acd8e2ba10c5 125 ser->printf("--\r\n");
gabrio 0:acd8e2ba10c5 126 }