TEST_LoRaSTboard

Dependencies:   BufferedSerial SX1276GenericLib mbed

Committer:
benpen10
Date:
Wed Jun 20 14:17:25 2018 +0000
Revision:
2:3eac2a81eba4
Parent:
0:5f52ac52da6c
LoRaPingpong1

Who changed what in which revision?

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