This is sample program for Nucleo L152RE (and F401RE & F411RE) mbed-rtos. You need to modify mbed-src and mbed-rtos before compile it.
Dependencies: mbed-rtos mbed-src SetRTC
Fork of GR-PEACH_test_on_rtos_works_well by
Please refer below link.
/users/kenjiArai/notebook/necleo-l152re-rtos-sample-also-for-f401re--f411re-/
debug_tools_L152_F4x1RE/debug_common.h@13:d0d1da1fae4c, 2015-05-20 (annotated)
- Committer:
- kenjiArai
- Date:
- Wed May 20 10:49:02 2015 +0000
- Revision:
- 13:d0d1da1fae4c
- Parent:
- 10:1c0f58b9c048
change L152 System clock (PLL VCO=96MHz) ->32MHz Clock
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 10:1c0f58b9c048 | 1 | /* |
kenjiArai | 10:1c0f58b9c048 | 2 | * mbed Application program (part of debuf_xxx.cpp) |
kenjiArai | 10:1c0f58b9c048 | 3 | * |
kenjiArai | 10:1c0f58b9c048 | 4 | * Copyright (c) 2010-2015 Kenji Arai / JH1PJL |
kenjiArai | 10:1c0f58b9c048 | 5 | * http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 10:1c0f58b9c048 | 6 | * http://mbed.org/users/kenjiArai/ |
kenjiArai | 10:1c0f58b9c048 | 7 | * Created: October 16th, 2014 |
kenjiArai | 10:1c0f58b9c048 | 8 | * Revised: May 16th, 2015 |
kenjiArai | 10:1c0f58b9c048 | 9 | * |
kenjiArai | 10:1c0f58b9c048 | 10 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
kenjiArai | 10:1c0f58b9c048 | 11 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE |
kenjiArai | 10:1c0f58b9c048 | 12 | * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
kenjiArai | 10:1c0f58b9c048 | 13 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
kenjiArai | 10:1c0f58b9c048 | 14 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
kenjiArai | 10:1c0f58b9c048 | 15 | */ |
kenjiArai | 10:1c0f58b9c048 | 16 | |
kenjiArai | 10:1c0f58b9c048 | 17 | // Definition ------------------------------------------------------------------------------------ |
kenjiArai | 10:1c0f58b9c048 | 18 | #define BAUD(x) pc.baud(x) |
kenjiArai | 10:1c0f58b9c048 | 19 | #define GETC(x) pc.getc(x) |
kenjiArai | 10:1c0f58b9c048 | 20 | #define PUTC(x) pc.putc(x) |
kenjiArai | 10:1c0f58b9c048 | 21 | #define PRINTF(...) pc.printf(__VA_ARGS__) |
kenjiArai | 10:1c0f58b9c048 | 22 | #define READABLE(x) pc.readable(x) |
kenjiArai | 10:1c0f58b9c048 | 23 | |
kenjiArai | 10:1c0f58b9c048 | 24 | #define BAUD_RATE 9600 |
kenjiArai | 10:1c0f58b9c048 | 25 | |
kenjiArai | 10:1c0f58b9c048 | 26 | // Object ---------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 27 | extern Serial pc; |
kenjiArai | 10:1c0f58b9c048 | 28 | |
kenjiArai | 10:1c0f58b9c048 | 29 | // RAM ------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 30 | static char linebuf[64]; |
kenjiArai | 10:1c0f58b9c048 | 31 | static int buf_size = sizeof(linebuf); |
kenjiArai | 10:1c0f58b9c048 | 32 | |
kenjiArai | 10:1c0f58b9c048 | 33 | // ROM / Constant data --------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 34 | char *const mon_msg = |
kenjiArai | 10:1c0f58b9c048 | 35 | "Debug Interface for mbed system, created on UTC: "__DATE__"("__TIME__")"; |
kenjiArai | 10:1c0f58b9c048 | 36 | |
kenjiArai | 10:1c0f58b9c048 | 37 | // Function prototypes --------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 38 | extern void mon_hw(void); |
kenjiArai | 10:1c0f58b9c048 | 39 | extern void get_freq(int pr); |
kenjiArai | 10:1c0f58b9c048 | 40 | |
kenjiArai | 10:1c0f58b9c048 | 41 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 42 | // Control Program |
kenjiArai | 10:1c0f58b9c048 | 43 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 44 | // Put \r\n |
kenjiArai | 10:1c0f58b9c048 | 45 | void put_rn ( void ) |
kenjiArai | 10:1c0f58b9c048 | 46 | { |
kenjiArai | 10:1c0f58b9c048 | 47 | PUTC('\r'); |
kenjiArai | 10:1c0f58b9c048 | 48 | PUTC('\n'); |
kenjiArai | 10:1c0f58b9c048 | 49 | } |
kenjiArai | 10:1c0f58b9c048 | 50 | |
kenjiArai | 10:1c0f58b9c048 | 51 | // Put \r |
kenjiArai | 10:1c0f58b9c048 | 52 | void put_r ( void ) |
kenjiArai | 10:1c0f58b9c048 | 53 | { |
kenjiArai | 10:1c0f58b9c048 | 54 | PUTC('\r'); |
kenjiArai | 10:1c0f58b9c048 | 55 | } |
kenjiArai | 10:1c0f58b9c048 | 56 | |
kenjiArai | 10:1c0f58b9c048 | 57 | // Put ", " |
kenjiArai | 10:1c0f58b9c048 | 58 | void put_lin ( void ) |
kenjiArai | 10:1c0f58b9c048 | 59 | { |
kenjiArai | 10:1c0f58b9c048 | 60 | PRINTF(", "); |
kenjiArai | 10:1c0f58b9c048 | 61 | } |
kenjiArai | 10:1c0f58b9c048 | 62 | |
kenjiArai | 10:1c0f58b9c048 | 63 | // Put space n |
kenjiArai | 10:1c0f58b9c048 | 64 | void put_spc( uint8_t n) |
kenjiArai | 10:1c0f58b9c048 | 65 | { |
kenjiArai | 10:1c0f58b9c048 | 66 | for(; n > 0; n--) { |
kenjiArai | 10:1c0f58b9c048 | 67 | PUTC(' '); |
kenjiArai | 10:1c0f58b9c048 | 68 | } |
kenjiArai | 10:1c0f58b9c048 | 69 | } |
kenjiArai | 10:1c0f58b9c048 | 70 | |
kenjiArai | 10:1c0f58b9c048 | 71 | // Change string -> integer |
kenjiArai | 10:1c0f58b9c048 | 72 | //int xatoi (char **str, unsigned long *res){ |
kenjiArai | 10:1c0f58b9c048 | 73 | int xatoi (char **str, int32_t *res) |
kenjiArai | 10:1c0f58b9c048 | 74 | { |
kenjiArai | 10:1c0f58b9c048 | 75 | unsigned long val; |
kenjiArai | 10:1c0f58b9c048 | 76 | unsigned char c, radix, s = 0; |
kenjiArai | 10:1c0f58b9c048 | 77 | |
kenjiArai | 10:1c0f58b9c048 | 78 | while ((c = **str) == ' ') (*str)++; |
kenjiArai | 10:1c0f58b9c048 | 79 | if (c == '-') { |
kenjiArai | 10:1c0f58b9c048 | 80 | s = 1; |
kenjiArai | 10:1c0f58b9c048 | 81 | c = *(++(*str)); |
kenjiArai | 10:1c0f58b9c048 | 82 | } |
kenjiArai | 10:1c0f58b9c048 | 83 | if (c == '0') { |
kenjiArai | 10:1c0f58b9c048 | 84 | c = *(++(*str)); |
kenjiArai | 10:1c0f58b9c048 | 85 | if (c <= ' ') { |
kenjiArai | 10:1c0f58b9c048 | 86 | *res = 0; |
kenjiArai | 10:1c0f58b9c048 | 87 | return 1; |
kenjiArai | 10:1c0f58b9c048 | 88 | } |
kenjiArai | 10:1c0f58b9c048 | 89 | if (c == 'x') { |
kenjiArai | 10:1c0f58b9c048 | 90 | radix = 16; |
kenjiArai | 10:1c0f58b9c048 | 91 | c = *(++(*str)); |
kenjiArai | 10:1c0f58b9c048 | 92 | } else { |
kenjiArai | 10:1c0f58b9c048 | 93 | if (c == 'b') { |
kenjiArai | 10:1c0f58b9c048 | 94 | radix = 2; |
kenjiArai | 10:1c0f58b9c048 | 95 | c = *(++(*str)); |
kenjiArai | 10:1c0f58b9c048 | 96 | } else { |
kenjiArai | 10:1c0f58b9c048 | 97 | if ((c >= '0')&&(c <= '9')) { |
kenjiArai | 10:1c0f58b9c048 | 98 | radix = 8; |
kenjiArai | 10:1c0f58b9c048 | 99 | } else { |
kenjiArai | 10:1c0f58b9c048 | 100 | return 0; |
kenjiArai | 10:1c0f58b9c048 | 101 | } |
kenjiArai | 10:1c0f58b9c048 | 102 | } |
kenjiArai | 10:1c0f58b9c048 | 103 | } |
kenjiArai | 10:1c0f58b9c048 | 104 | } else { |
kenjiArai | 10:1c0f58b9c048 | 105 | if ((c < '1')||(c > '9')) { |
kenjiArai | 10:1c0f58b9c048 | 106 | return 0; |
kenjiArai | 10:1c0f58b9c048 | 107 | } |
kenjiArai | 10:1c0f58b9c048 | 108 | radix = 10; |
kenjiArai | 10:1c0f58b9c048 | 109 | } |
kenjiArai | 10:1c0f58b9c048 | 110 | val = 0; |
kenjiArai | 10:1c0f58b9c048 | 111 | while (c > ' ') { |
kenjiArai | 10:1c0f58b9c048 | 112 | if (c >= 'a') c -= 0x20; |
kenjiArai | 10:1c0f58b9c048 | 113 | c -= '0'; |
kenjiArai | 10:1c0f58b9c048 | 114 | if (c >= 17) { |
kenjiArai | 10:1c0f58b9c048 | 115 | c -= 7; |
kenjiArai | 10:1c0f58b9c048 | 116 | if (c <= 9) return 0; |
kenjiArai | 10:1c0f58b9c048 | 117 | } |
kenjiArai | 10:1c0f58b9c048 | 118 | if (c >= radix) return 0; |
kenjiArai | 10:1c0f58b9c048 | 119 | val = val * radix + c; |
kenjiArai | 10:1c0f58b9c048 | 120 | c = *(++(*str)); |
kenjiArai | 10:1c0f58b9c048 | 121 | } |
kenjiArai | 10:1c0f58b9c048 | 122 | if (s) val = -val; |
kenjiArai | 10:1c0f58b9c048 | 123 | *res = val; |
kenjiArai | 10:1c0f58b9c048 | 124 | return 1; |
kenjiArai | 10:1c0f58b9c048 | 125 | } |
kenjiArai | 10:1c0f58b9c048 | 126 | |
kenjiArai | 10:1c0f58b9c048 | 127 | // Get key input data |
kenjiArai | 10:1c0f58b9c048 | 128 | void get_line (char *buff, int len) |
kenjiArai | 10:1c0f58b9c048 | 129 | { |
kenjiArai | 10:1c0f58b9c048 | 130 | char c; |
kenjiArai | 10:1c0f58b9c048 | 131 | int idx = 0; |
kenjiArai | 10:1c0f58b9c048 | 132 | |
kenjiArai | 10:1c0f58b9c048 | 133 | for (;;) { |
kenjiArai | 10:1c0f58b9c048 | 134 | c = GETC(); |
kenjiArai | 10:1c0f58b9c048 | 135 | // Added by Kenji Arai / JH1PJL May 9th, 2010 |
kenjiArai | 10:1c0f58b9c048 | 136 | if (c == '\r') { |
kenjiArai | 10:1c0f58b9c048 | 137 | buff[idx++] = c; |
kenjiArai | 10:1c0f58b9c048 | 138 | break; |
kenjiArai | 10:1c0f58b9c048 | 139 | } |
kenjiArai | 10:1c0f58b9c048 | 140 | if ((c == '\b') && idx) { |
kenjiArai | 10:1c0f58b9c048 | 141 | idx--; |
kenjiArai | 10:1c0f58b9c048 | 142 | PUTC(c); |
kenjiArai | 10:1c0f58b9c048 | 143 | PUTC(' '); |
kenjiArai | 10:1c0f58b9c048 | 144 | PUTC(c); |
kenjiArai | 10:1c0f58b9c048 | 145 | } |
kenjiArai | 10:1c0f58b9c048 | 146 | if (((uint8_t)c >= ' ') && (idx < len - 1)) { |
kenjiArai | 10:1c0f58b9c048 | 147 | buff[idx++] = c; |
kenjiArai | 10:1c0f58b9c048 | 148 | PUTC(c); |
kenjiArai | 10:1c0f58b9c048 | 149 | } |
kenjiArai | 10:1c0f58b9c048 | 150 | } |
kenjiArai | 10:1c0f58b9c048 | 151 | buff[idx] = 0; |
kenjiArai | 10:1c0f58b9c048 | 152 | PUTC('\n'); |
kenjiArai | 10:1c0f58b9c048 | 153 | } |
kenjiArai | 10:1c0f58b9c048 | 154 | |
kenjiArai | 10:1c0f58b9c048 | 155 | #if 0 |
kenjiArai | 10:1c0f58b9c048 | 156 | // RTC related subroutines |
kenjiArai | 10:1c0f58b9c048 | 157 | void chk_and_set_time(char *ptr) |
kenjiArai | 10:1c0f58b9c048 | 158 | { |
kenjiArai | 10:1c0f58b9c048 | 159 | //unsigned long p1; |
kenjiArai | 10:1c0f58b9c048 | 160 | int32_t p1; |
kenjiArai | 10:1c0f58b9c048 | 161 | struct tm t; |
kenjiArai | 10:1c0f58b9c048 | 162 | time_t seconds; |
kenjiArai | 10:1c0f58b9c048 | 163 | char buf[40]; |
kenjiArai | 10:1c0f58b9c048 | 164 | |
kenjiArai | 10:1c0f58b9c048 | 165 | if (xatoi(&ptr, &p1)) { |
kenjiArai | 10:1c0f58b9c048 | 166 | t.tm_year = (uint8_t)p1 + 100; |
kenjiArai | 10:1c0f58b9c048 | 167 | PRINTF("Year:%d ",p1); |
kenjiArai | 10:1c0f58b9c048 | 168 | xatoi( &ptr, &p1 ); |
kenjiArai | 10:1c0f58b9c048 | 169 | t.tm_mon = (uint8_t)p1 - 1; |
kenjiArai | 10:1c0f58b9c048 | 170 | PRINTF("Month:%d ",p1); |
kenjiArai | 10:1c0f58b9c048 | 171 | xatoi( &ptr, &p1 ); |
kenjiArai | 10:1c0f58b9c048 | 172 | t.tm_mday = (uint8_t)p1; |
kenjiArai | 10:1c0f58b9c048 | 173 | PRINTF("Day:%d ",p1); |
kenjiArai | 10:1c0f58b9c048 | 174 | xatoi( &ptr, &p1 ); |
kenjiArai | 10:1c0f58b9c048 | 175 | t.tm_hour = (uint8_t)p1; |
kenjiArai | 10:1c0f58b9c048 | 176 | PRINTF("Hour:%d ",p1); |
kenjiArai | 10:1c0f58b9c048 | 177 | xatoi( &ptr, &p1 ); |
kenjiArai | 10:1c0f58b9c048 | 178 | t.tm_min = (uint8_t)p1; |
kenjiArai | 10:1c0f58b9c048 | 179 | PRINTF("Min:%d ",p1); |
kenjiArai | 10:1c0f58b9c048 | 180 | xatoi( &ptr, &p1 ); |
kenjiArai | 10:1c0f58b9c048 | 181 | t.tm_sec = (uint8_t)p1; |
kenjiArai | 10:1c0f58b9c048 | 182 | PRINTF("Sec: %d \r\n",p1); |
kenjiArai | 10:1c0f58b9c048 | 183 | seconds = mktime(&t); |
kenjiArai | 10:1c0f58b9c048 | 184 | set_time(seconds); |
kenjiArai | 10:1c0f58b9c048 | 185 | } |
kenjiArai | 10:1c0f58b9c048 | 186 | seconds = time(NULL); |
kenjiArai | 10:1c0f58b9c048 | 187 | strftime(buf, 40, "%B %d,'%y, %H:%M:%S", localtime(&seconds)); |
kenjiArai | 10:1c0f58b9c048 | 188 | PRINTF("Date: %s\r\n", buf); |
kenjiArai | 10:1c0f58b9c048 | 189 | } |
kenjiArai | 10:1c0f58b9c048 | 190 | #endif |