STmicro HAL driver DMA.

Committer:
aruaru
Date:
Mon Apr 08 13:53:14 2019 +0000
Revision:
0:96568f3ac645
Child:
2:9d67e2b0d96b
dam in out works.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aruaru 0:96568f3ac645 1 /* mbed Microcontroller Library
aruaru 0:96568f3ac645 2 * Copyright (c) 2018 ARM Limited
aruaru 0:96568f3ac645 3 * SPDX-License-Identifier: Apache-2.0
aruaru 0:96568f3ac645 4 */
aruaru 0:96568f3ac645 5
aruaru 0:96568f3ac645 6 #include "mbed.h"
aruaru 0:96568f3ac645 7 #include "stats_report.h"
aruaru 0:96568f3ac645 8
aruaru 0:96568f3ac645 9 /*
aruaru 0:96568f3ac645 10 * main.cpp
aruaru 0:96568f3ac645 11 *
aruaru 0:96568f3ac645 12 * Created on: 2019/04/03
aruaru 0:96568f3ac645 13 * Author: aruaru
aruaru 0:96568f3ac645 14 */
aruaru 0:96568f3ac645 15
aruaru 0:96568f3ac645 16
aruaru 0:96568f3ac645 17 #include "application.h"
aruaru 0:96568f3ac645 18
aruaru 0:96568f3ac645 19 #include "usart.h"
aruaru 0:96568f3ac645 20 #include "dma.h"
aruaru 0:96568f3ac645 21 #include "mx.h"
aruaru 0:96568f3ac645 22
aruaru 0:96568f3ac645 23 EventQueue* hqueue;
aruaru 0:96568f3ac645 24 DigitalOut* hled;
aruaru 0:96568f3ac645 25 Timer utime;
aruaru 0:96568f3ac645 26 int now;//1ms毎に更新
aruaru 0:96568f3ac645 27
aruaru 0:96568f3ac645 28 int printfunc(const char *format, ...){
aruaru 0:96568f3ac645 29 char* b;
aruaru 0:96568f3ac645 30 int len;
aruaru 0:96568f3ac645 31 va_list arg;
aruaru 0:96568f3ac645 32 va_start(arg, format);
aruaru 0:96568f3ac645 33 len=vasprintf( &b , format, arg );
aruaru 0:96568f3ac645 34 int status;
aruaru 0:96568f3ac645 35 int retry;
aruaru 0:96568f3ac645 36 while(1)
aruaru 0:96568f3ac645 37 {
aruaru 0:96568f3ac645 38 status = printUart( b , len );
aruaru 0:96568f3ac645 39 if(status == HAL_OK)break;
aruaru 0:96568f3ac645 40 wait_ms(10);
aruaru 0:96568f3ac645 41 retry++;
aruaru 0:96568f3ac645 42 if(retry>10)return 0;
aruaru 0:96568f3ac645 43 }
aruaru 0:96568f3ac645 44 va_end(arg);
aruaru 0:96568f3ac645 45 free(b);
aruaru 0:96568f3ac645 46 return len;
aruaru 0:96568f3ac645 47 }
aruaru 0:96568f3ac645 48 void interval1ms(void){
aruaru 0:96568f3ac645 49 char c;
aruaru 0:96568f3ac645 50 now=utime.read_ms();
aruaru 0:96568f3ac645 51 if(1){
aruaru 0:96568f3ac645 52 if( getChar(&c) ){
aruaru 0:96568f3ac645 53 logMessage("utime:%d,cndtr:%d,pos:%d,%02x,%c\n\r",now,readCndtr(),readPos(),c,c);
aruaru 0:96568f3ac645 54 }
aruaru 0:96568f3ac645 55 }
aruaru 0:96568f3ac645 56 }
aruaru 0:96568f3ac645 57 void interval1000ms(void){
aruaru 0:96568f3ac645 58 *hled = !*hled;
aruaru 0:96568f3ac645 59 }
aruaru 0:96568f3ac645 60 void systemInfo(){
aruaru 0:96568f3ac645 61 mbed_stats_sys_t stats;
aruaru 0:96568f3ac645 62 mbed_stats_sys_get(&stats);
aruaru 0:96568f3ac645 63
aruaru 0:96568f3ac645 64 /* CPUID Register information
aruaru 0:96568f3ac645 65 [31:24]Implementer 0x41 = ARM
aruaru 0:96568f3ac645 66 [23:20]Variant Major revision 0x0 = Revision 0
aruaru 0:96568f3ac645 67 [19:16]Architecture 0xC = Baseline Architecture
aruaru 0:96568f3ac645 68 0xF = Constant (Mainline Architecture?)
aruaru 0:96568f3ac645 69 [15:4]PartNO 0xC20 = Cortex-M0
aruaru 0:96568f3ac645 70 0xC60 = Cortex-M0+
aruaru 0:96568f3ac645 71 0xC23 = Cortex-M3
aruaru 0:96568f3ac645 72 0xC24 = Cortex-M4
aruaru 0:96568f3ac645 73 0xC27 = Cortex-M7
aruaru 0:96568f3ac645 74 0xD20 = Cortex-M23
aruaru 0:96568f3ac645 75 0xD21 = Cortex-M33
aruaru 0:96568f3ac645 76 [3:0]Revision Minor revision: 0x1 = Patch 1.
aruaru 0:96568f3ac645 77 */
aruaru 0:96568f3ac645 78
aruaru 0:96568f3ac645 79 /* Compiler versions:
aruaru 0:96568f3ac645 80 ARM: PVVbbbb (P = Major; VV = Minor; bbbb = build number)
aruaru 0:96568f3ac645 81 GCC: VVRRPP (VV = Version; RR = Revision; PP = Patch)
aruaru 0:96568f3ac645 82 IAR: VRRRPPP (V = Version; RRR = Revision; PPP = Patch)
aruaru 0:96568f3ac645 83 */
aruaru 0:96568f3ac645 84 logMessage("\n\r[%s] %s started.\n\r",__FUNCTION__,__FILE__ );
aruaru 0:96568f3ac645 85 logMessage("[%s]\tBUILD:%sT%s,\n\r",__FUNCTION__,__DATE__, __TIME__ );
aruaru 0:96568f3ac645 86 logMessage("[%s]\tmbed-OS:%d.%d.%d\n\r",__FUNCTION__,
aruaru 0:96568f3ac645 87 MBED_MAJOR_VERSION, MBED_MINOR_VERSION,MBED_PATCH_VERSION
aruaru 0:96568f3ac645 88 );
aruaru 0:96568f3ac645 89 logMessage("[%s]\tMbed OS Version: %ld \n\r",__FUNCTION__, stats.os_version);
aruaru 0:96568f3ac645 90 logMessage("[%s]\tCPU ID: 0x%x \n\r",__FUNCTION__,(unsigned int) stats.cpu_id);
aruaru 0:96568f3ac645 91 logMessage("[%s]\tCompiler ID: %d \n\r",__FUNCTION__, stats.compiler_id);
aruaru 0:96568f3ac645 92 logMessage("[%s]\tCompiler Version: %d \n\r",__FUNCTION__, (unsigned int)stats.compiler_version);
aruaru 0:96568f3ac645 93 logMessage("[%s]\tSTM32HAL_driver Version: 0x%08x \n\r",__FUNCTION__, (unsigned int)HAL_GetHalVersion());
aruaru 0:96568f3ac645 94 }
aruaru 0:96568f3ac645 95 int main(){
aruaru 0:96568f3ac645 96 utime.start();
aruaru 0:96568f3ac645 97 hled = new DigitalOut(LED1);
aruaru 0:96568f3ac645 98 hqueue = new EventQueue(32*EVENTS_EVENT_SIZE);
aruaru 0:96568f3ac645 99
aruaru 0:96568f3ac645 100 MX_DMA_Init();
aruaru 0:96568f3ac645 101 MX_USART2_UART_Init();
aruaru 0:96568f3ac645 102 HAL_StatusTypeDef status;
aruaru 0:96568f3ac645 103
aruaru 0:96568f3ac645 104 systemInfo();
aruaru 0:96568f3ac645 105
aruaru 0:96568f3ac645 106 status = startRxUart();
aruaru 0:96568f3ac645 107 if( status != HAL_OK ){
aruaru 0:96568f3ac645 108 printf("error status: %d\n\r",status);
aruaru 0:96568f3ac645 109 }else{
aruaru 0:96568f3ac645 110 logMessage("uartRXstart status: %d\n\r", status );
aruaru 0:96568f3ac645 111 }
aruaru 0:96568f3ac645 112 hqueue->call_every(1000,interval1000ms);
aruaru 0:96568f3ac645 113 hqueue->call_every(1,interval1ms);
aruaru 0:96568f3ac645 114 hqueue->dispatch_forever();
aruaru 0:96568f3ac645 115 }