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-/
modification_notice.h@12:2db841307633, 2015-05-19 (annotated)
- Committer:
- kenjiArai
- Date:
- Tue May 19 23:32:57 2015 +0000
- Revision:
- 12:2db841307633
- Parent:
- 11:587b8f1bab9d
- Child:
- 13:d0d1da1fae4c
updated comments in "modification_notice.h"
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 for the mbed |
kenjiArai | 10:1c0f58b9c048 | 3 | * Library differ part (This is only information document) |
kenjiArai | 10:1c0f58b9c048 | 4 | * |
kenjiArai | 10:1c0f58b9c048 | 5 | * Copyright (c) 2014,'15 Kenji Arai / JH1PJL |
kenjiArai | 10:1c0f58b9c048 | 6 | * http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 10:1c0f58b9c048 | 7 | * http://mbed.org/users/kenjiArai/ |
kenjiArai | 10:1c0f58b9c048 | 8 | * Created: May 14th, 2015 |
kenjiArai | 11:587b8f1bab9d | 9 | * Revised: May 16th, 2015, 11:05 a.m.(JST) |
kenjiArai | 10:1c0f58b9c048 | 10 | * |
kenjiArai | 10:1c0f58b9c048 | 11 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
kenjiArai | 10:1c0f58b9c048 | 12 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE |
kenjiArai | 10:1c0f58b9c048 | 13 | * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
kenjiArai | 10:1c0f58b9c048 | 14 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
kenjiArai | 10:1c0f58b9c048 | 15 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
kenjiArai | 10:1c0f58b9c048 | 16 | */ |
kenjiArai | 10:1c0f58b9c048 | 17 | |
kenjiArai | 10:1c0f58b9c048 | 18 | #if 0 /////////////////////////////////////////////////////////////////////////////////////////// |
kenjiArai | 10:1c0f58b9c048 | 19 | |
kenjiArai | 10:1c0f58b9c048 | 20 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 21 | // ----- Hardware configuration --------------- |
kenjiArai | 10:1c0f58b9c048 | 22 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 23 | |
kenjiArai | 10:1c0f58b9c048 | 24 | // Direct connection between below two pins. |
kenjiArai | 10:1c0f58b9c048 | 25 | // DAC0 output connected to ADC1 input |
kenjiArai | 10:1c0f58b9c048 | 26 | PA_4 : PA_1 |
kenjiArai | 10:1c0f58b9c048 | 27 | // DAC1 to ADC3 |
kenjiArai | 10:1c0f58b9c048 | 28 | PA_5 : PB_0 |
kenjiArai | 10:1c0f58b9c048 | 29 | // I2C1 master connected to I2C2 slave |
kenjiArai | 10:1c0f58b9c048 | 30 | PB_8 : PB_10 // Need 3.3Kohm pull-up |
kenjiArai | 10:1c0f58b9c048 | 31 | PB_9 : PB_11 // Need 3.3Kohm pull-up |
kenjiArai | 10:1c0f58b9c048 | 32 | // Connecetd with CR network |
kenjiArai | 10:1c0f58b9c048 | 33 | // LED's connected each pin with R=330Ohm to GND |
kenjiArai | 10:1c0f58b9c048 | 34 | PC_2 |
kenjiArai | 10:1c0f58b9c048 | 35 | PC_3 |
kenjiArai | 10:1c0f58b9c048 | 36 | PC_10 |
kenjiArai | 10:1c0f58b9c048 | 37 | PC_11 |
kenjiArai | 10:1c0f58b9c048 | 38 | PC_12 |
kenjiArai | 10:1c0f58b9c048 | 39 | |
kenjiArai | 10:1c0f58b9c048 | 40 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 41 | // ----- Software Modification --------------- |
kenjiArai | 10:1c0f58b9c048 | 42 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 43 | // SUMMARY information |
kenjiArai | 10:1c0f58b9c048 | 44 | // Nucleo_rtos_sample |
kenjiArai | 10:1c0f58b9c048 | 45 | + debug_tools_L152_F4x1RE <- Created as new lib. |
kenjiArai | 10:1c0f58b9c048 | 46 | + SetRTC <- Lib. updated by myself |
kenjiArai | 10:1c0f58b9c048 | 47 | // + files |
kenjiArai | 11:587b8f1bab9d | 48 | + mbed-rtos <- Rev.77 (checked on May 16, 2015) |
kenjiArai | 10:1c0f58b9c048 | 49 | // + rtos |
kenjiArai | 10:1c0f58b9c048 | 50 | // + rtx |
kenjiArai | 10:1c0f58b9c048 | 51 | // + TARGET_CORTEX_M |
kenjiArai | 11:587b8f1bab9d | 52 | + RTX_Conf_CM.c <- (1) Need to modify before compile by yourself |
kenjiArai | 10:1c0f58b9c048 | 53 | // + DIRs & Files |
kenjiArai | 10:1c0f58b9c048 | 54 | // + DIRs & Files + DIRs & Files |
kenjiArai | 10:1c0f58b9c048 | 55 | + mbe-src <- Rev.541 (checked on May 16, 2015) |
kenjiArai | 10:1c0f58b9c048 | 56 | // + targets |
kenjiArai | 10:1c0f58b9c048 | 57 | // + cmsis |
kenjiArai | 10:1c0f58b9c048 | 58 | // + TARGET_STM |
kenjiArai | 10:1c0f58b9c048 | 59 | // + TARGET_STM32L1 |
kenjiArai | 10:1c0f58b9c048 | 60 | // + TARGET_NUCLEO_L152RE |
kenjiArai | 10:1c0f58b9c048 | 61 | // + system_stm32l1xx.c |
kenjiArai | 11:587b8f1bab9d | 62 | <- (2) Need to modify before compile by yourself |
kenjiArai | 10:1c0f58b9c048 | 63 | // + DIRs & Files |
kenjiArai | 10:1c0f58b9c048 | 64 | // + hal |
kenjiArai | 10:1c0f58b9c048 | 65 | // + TARGET_STM |
kenjiArai | 10:1c0f58b9c048 | 66 | // + TARGET_STM32F4 |
kenjiArai | 10:1c0f58b9c048 | 67 | // + rtc_api.c |
kenjiArai | 11:587b8f1bab9d | 68 | <- (3) Need to modify before compile by yourself |
kenjiArai | 10:1c0f58b9c048 | 69 | // + DIRs & Files |
kenjiArai | 10:1c0f58b9c048 | 70 | // + TARGET_NUCLEO_L152RE |
kenjiArai | 10:1c0f58b9c048 | 71 | // + rtc_api.c |
kenjiArai | 11:587b8f1bab9d | 72 | <- (4) Need to modify before compile by yourself |
kenjiArai | 10:1c0f58b9c048 | 73 | // + DIRs & Files |
kenjiArai | 10:1c0f58b9c048 | 74 | // + DIR & Files + DIRs & Files + DIRs & Files |
kenjiArai | 10:1c0f58b9c048 | 75 | |
kenjiArai | 10:1c0f58b9c048 | 76 | (1) CAUTION!! for Nucleo L152RE mbed |
kenjiArai | 10:1c0f58b9c048 | 77 | L152 mbed has following setting both mbed lib. and mbed-src lib. |
kenjiArai | 10:1c0f58b9c048 | 78 | System Clock = 24 MHz (started as 32 MHz but due to USB clock creation, changed to 24 MHz) |
kenjiArai | 11:587b8f1bab9d | 79 | If you would like to use 24 MHz, do NOT modify (1) and (2). |
kenjiArai | 10:1c0f58b9c048 | 80 | |
kenjiArai | 12:2db841307633 | 81 | As of May 20th, 2015 |
kenjiArai | 12:2db841307633 | 82 | Followings are investigation result. |
kenjiArai | 12:2db841307633 | 83 | Case L152 (C-01 old ver with internal RC clock) |
kenjiArai | 12:2db841307633 | 84 | before and rev.81 20140319 -> 16000000Hz |
kenjiArai | 12:2db841307633 | 85 | rev.82 and after 20140407 -> 32000000Hz |
kenjiArai | 12:2db841307633 | 86 | Case L152 (C-02 new ver) |
kenjiArai | 12:2db841307633 | 87 | before and rev.81 20140319 -> 16000000Hz |
kenjiArai | 12:2db841307633 | 88 | rev.82 and after 20140407 -> 24000000Hz |
kenjiArai | 12:2db841307633 | 89 | |
kenjiArai | 12:2db841307633 | 90 | Currently L152RE has two type of operation, 24MHz and 32MHz. |
kenjiArai | 12:2db841307633 | 91 | |
kenjiArai | 10:1c0f58b9c048 | 92 | (2) CAUTION!! for Nucleo F411RE mbed |
kenjiArai | 10:1c0f58b9c048 | 93 | F411 med has been changed System clock = 96 MHz (former setting 100 MHz). |
kenjiArai | 10:1c0f58b9c048 | 94 | Please modify #ifndef OS_CLOCK related part. |
kenjiArai | 10:1c0f58b9c048 | 95 | |
kenjiArai | 10:1c0f58b9c048 | 96 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 11:587b8f1bab9d | 97 | // (1) /mbed-rtos/mbed-rtos/rtx/TARGET_CORTEX_M/RTX_Conf_CM.c |
kenjiArai | 10:1c0f58b9c048 | 98 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 99 | // Insert & Modifiy (from line 118) |
kenjiArai | 10:1c0f58b9c048 | 100 | /* |
kenjiArai | 10:1c0f58b9c048 | 101 | // Insert (below 2 lines) |
kenjiArai | 10:1c0f58b9c048 | 102 | #elif defined(TARGET_STM32L152RE) |
kenjiArai | 10:1c0f58b9c048 | 103 | //# define OS_CLOCK 24000000 |
kenjiArai | 10:1c0f58b9c048 | 104 | # define OS_CLOCK 32000000 |
kenjiArai | 10:1c0f58b9c048 | 105 | // Modify (100MHz to 96MHz) |
kenjiArai | 10:1c0f58b9c048 | 106 | # elif defined(TARGET_STM32F411RE) |
kenjiArai | 10:1c0f58b9c048 | 107 | # define OS_CLOCK 96000000 |
kenjiArai | 10:1c0f58b9c048 | 108 | */ |
kenjiArai | 10:1c0f58b9c048 | 109 | // Copy & Paste from next line |
kenjiArai | 10:1c0f58b9c048 | 110 | #ifndef OS_CLOCK |
kenjiArai | 10:1c0f58b9c048 | 111 | # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) |
kenjiArai | 10:1c0f58b9c048 | 112 | # define OS_CLOCK 96000000 |
kenjiArai | 10:1c0f58b9c048 | 113 | |
kenjiArai | 10:1c0f58b9c048 | 114 | # elif defined(TARGET_LPC1347) || defined(TARGET_STM32F303VC) || defined(TARGET_LPC1549) || defined(TARGET_STM32F334R8) || defined(TARGET_STM32F334C8) || defined(TARGET_STM32F303RE) |
kenjiArai | 10:1c0f58b9c048 | 115 | # define OS_CLOCK 72000000 |
kenjiArai | 10:1c0f58b9c048 | 116 | |
kenjiArai | 10:1c0f58b9c048 | 117 | # elif defined(TARGET_LPC11U24) || defined(TARGET_LPC11U35_401) || defined(TARGET_LPC11U35_501) || defined(TARGET_LPCCAPPUCCINO) || defined(TARGET_LPC1114) || defined(TARGET_KL25Z) \ |
kenjiArai | 10:1c0f58b9c048 | 118 | || defined(TARGET_KL05Z) || defined(TARGET_KL46Z) || defined(TARGET_KL43Z) || defined(TARGET_STM32F051R8) || defined(TARGET_LPC11U68) || defined(TARGET_STM32F072RB) || defined(TARGET_STM32F091RC) |
kenjiArai | 10:1c0f58b9c048 | 119 | # define OS_CLOCK 48000000 |
kenjiArai | 10:1c0f58b9c048 | 120 | |
kenjiArai | 10:1c0f58b9c048 | 121 | # elif defined(TARGET_LPC812) |
kenjiArai | 10:1c0f58b9c048 | 122 | # define OS_CLOCK 36000000 |
kenjiArai | 10:1c0f58b9c048 | 123 | |
kenjiArai | 10:1c0f58b9c048 | 124 | # elif defined(TARGET_LPC824) |
kenjiArai | 10:1c0f58b9c048 | 125 | # define OS_CLOCK 30000000 |
kenjiArai | 10:1c0f58b9c048 | 126 | |
kenjiArai | 10:1c0f58b9c048 | 127 | # elif defined(TARGET_STM32F100RB) |
kenjiArai | 10:1c0f58b9c048 | 128 | # define OS_CLOCK 24000000 |
kenjiArai | 10:1c0f58b9c048 | 129 | |
kenjiArai | 10:1c0f58b9c048 | 130 | # elif defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) || defined(TARGET_K64F) || defined(TARGET_K22F) |
kenjiArai | 10:1c0f58b9c048 | 131 | # define OS_CLOCK 120000000 |
kenjiArai | 10:1c0f58b9c048 | 132 | |
kenjiArai | 10:1c0f58b9c048 | 133 | # elif defined(TARGET_LPC4330) |
kenjiArai | 10:1c0f58b9c048 | 134 | # define OS_CLOCK 204000000 |
kenjiArai | 10:1c0f58b9c048 | 135 | |
kenjiArai | 10:1c0f58b9c048 | 136 | # elif defined(TARGET_LPC4337) |
kenjiArai | 10:1c0f58b9c048 | 137 | # define OS_CLOCK 204000000 |
kenjiArai | 10:1c0f58b9c048 | 138 | |
kenjiArai | 10:1c0f58b9c048 | 139 | # elif defined(TARGET_STM32F407) || defined(TARGET_F407VG) |
kenjiArai | 10:1c0f58b9c048 | 140 | # define OS_CLOCK 168000000 |
kenjiArai | 10:1c0f58b9c048 | 141 | |
kenjiArai | 10:1c0f58b9c048 | 142 | # elif defined(TARGET_STM32F401RE) |
kenjiArai | 10:1c0f58b9c048 | 143 | # define OS_CLOCK 84000000 |
kenjiArai | 10:1c0f58b9c048 | 144 | |
kenjiArai | 10:1c0f58b9c048 | 145 | # elif defined(TARGET_STM32F411RE) |
kenjiArai | 10:1c0f58b9c048 | 146 | # define OS_CLOCK 96000000 |
kenjiArai | 10:1c0f58b9c048 | 147 | |
kenjiArai | 10:1c0f58b9c048 | 148 | #elif defined(TARGET_STM32F103RB) |
kenjiArai | 10:1c0f58b9c048 | 149 | # define OS_CLOCK 72000000 |
kenjiArai | 10:1c0f58b9c048 | 150 | |
kenjiArai | 10:1c0f58b9c048 | 151 | #elif defined(TARGET_STM32F429ZI) |
kenjiArai | 10:1c0f58b9c048 | 152 | # define OS_CLOCK 168000000 |
kenjiArai | 10:1c0f58b9c048 | 153 | |
kenjiArai | 10:1c0f58b9c048 | 154 | #elif defined(TARGET_STM32F302R8) |
kenjiArai | 10:1c0f58b9c048 | 155 | # define OS_CLOCK 64000000 |
kenjiArai | 10:1c0f58b9c048 | 156 | |
kenjiArai | 10:1c0f58b9c048 | 157 | #elif defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) |
kenjiArai | 10:1c0f58b9c048 | 158 | # define OS_CLOCK 32000000 |
kenjiArai | 10:1c0f58b9c048 | 159 | |
kenjiArai | 10:1c0f58b9c048 | 160 | #elif defined(TARGET_STM32F401VC) |
kenjiArai | 10:1c0f58b9c048 | 161 | # define OS_CLOCK 84000000 |
kenjiArai | 10:1c0f58b9c048 | 162 | |
kenjiArai | 10:1c0f58b9c048 | 163 | #elif defined(TARGET_MAX32610) || defined(TARGET_MAX32600) |
kenjiArai | 10:1c0f58b9c048 | 164 | # define OS_CLOCK 24000000 |
kenjiArai | 10:1c0f58b9c048 | 165 | |
kenjiArai | 10:1c0f58b9c048 | 166 | #elif defined(TARGET_STM32L152RE) |
kenjiArai | 10:1c0f58b9c048 | 167 | //# define OS_CLOCK 24000000 |
kenjiArai | 10:1c0f58b9c048 | 168 | # define OS_CLOCK 32000000 |
kenjiArai | 10:1c0f58b9c048 | 169 | |
kenjiArai | 10:1c0f58b9c048 | 170 | # else |
kenjiArai | 10:1c0f58b9c048 | 171 | # error "no target defined" |
kenjiArai | 10:1c0f58b9c048 | 172 | # endif |
kenjiArai | 10:1c0f58b9c048 | 173 | #endif |
kenjiArai | 10:1c0f58b9c048 | 174 | |
kenjiArai | 10:1c0f58b9c048 | 175 | // <o>Timer tick value [us] <1-1000000> |
kenjiArai | 10:1c0f58b9c048 | 176 | // <i> Defines the timer tick value. |
kenjiArai | 10:1c0f58b9c048 | 177 | // <i> Default: 1000 (1ms) |
kenjiArai | 10:1c0f58b9c048 | 178 | #ifndef OS_TICK |
kenjiArai | 10:1c0f58b9c048 | 179 | #define OS_TICK 1000 |
kenjiArai | 10:1c0f58b9c048 | 180 | #endif |
kenjiArai | 10:1c0f58b9c048 | 181 | // to above line |
kenjiArai | 10:1c0f58b9c048 | 182 | |
kenjiArai | 10:1c0f58b9c048 | 183 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 11:587b8f1bab9d | 184 | // (2) /mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32L1/TARGET_NUCLEO_L152RE/system_stm32l1xx.c |
kenjiArai | 10:1c0f58b9c048 | 185 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 186 | // inside SetSysClock_PLL_HSE() function (line 483) |
kenjiArai | 10:1c0f58b9c048 | 187 | // Modify (from line 511) |
kenjiArai | 10:1c0f58b9c048 | 188 | // Copy & Paste from next line |
kenjiArai | 10:1c0f58b9c048 | 189 | #if 0 |
kenjiArai | 10:1c0f58b9c048 | 190 | // SYSCLK = 24 MHz ((8 MHz * 6) / 2) |
kenjiArai | 10:1c0f58b9c048 | 191 | // USBCLK = 48 MHz (8 MHz * 6) --> USB OK |
kenjiArai | 10:1c0f58b9c048 | 192 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
kenjiArai | 10:1c0f58b9c048 | 193 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
kenjiArai | 10:1c0f58b9c048 | 194 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; |
kenjiArai | 10:1c0f58b9c048 | 195 | RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2; |
kenjiArai | 10:1c0f58b9c048 | 196 | #else |
kenjiArai | 10:1c0f58b9c048 | 197 | // SYSCLK = 32 MHz ((8 MHz * 8) / 2) |
kenjiArai | 10:1c0f58b9c048 | 198 | // USBCLK = 48 MHz (8 MHz * 8) --> USB NG |
kenjiArai | 10:1c0f58b9c048 | 199 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
kenjiArai | 10:1c0f58b9c048 | 200 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
kenjiArai | 10:1c0f58b9c048 | 201 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8; |
kenjiArai | 10:1c0f58b9c048 | 202 | RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2; |
kenjiArai | 10:1c0f58b9c048 | 203 | #endif |
kenjiArai | 10:1c0f58b9c048 | 204 | // to above line |
kenjiArai | 10:1c0f58b9c048 | 205 | |
kenjiArai | 10:1c0f58b9c048 | 206 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 11:587b8f1bab9d | 207 | // (3) /mbed-src/targets/hal/TARGET_STM/TARGET_STM/TARGET_STM32F4/rtc_api.c |
kenjiArai | 10:1c0f58b9c048 | 208 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 209 | Please see /debug_tools_L152_F4x1RE/SetRTC/modify_info_F4xx.h |
kenjiArai | 10:1c0f58b9c048 | 210 | |
kenjiArai | 10:1c0f58b9c048 | 211 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 11:587b8f1bab9d | 212 | // (4) /mbed-src/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/rtc_api.c |
kenjiArai | 10:1c0f58b9c048 | 213 | //------------------------------------------------------------------------------------------------- |
kenjiArai | 10:1c0f58b9c048 | 214 | Please see /debug_tools_L152_F4x1RE/SetRTC/modify_info_L152.h |
kenjiArai | 10:1c0f58b9c048 | 215 | |
kenjiArai | 10:1c0f58b9c048 | 216 | #endif /////////////////////////////////////////////////////////////////////////////////////// |