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 Kenji Arai

Please refer below link.
/users/kenjiArai/notebook/necleo-l152re-rtos-sample-also-for-f401re--f411re-/

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?

UserRevisionLine numberNew 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