simple tests for STM32F100R6 microcontroller with dedicated library
Dependencies: mbed-STM32F100R6
To compile a program with this library, use NUCLEO-F103RB as the target name. !
Change only one "#if" to "#if 1" to select the desired test. Others "#if" must be "#if 0".
main.cpp@6:0e5b5019f1d5, 2017-03-19 (annotated)
- Committer:
- mega64
- Date:
- Sun Mar 19 23:36:31 2017 +0000
- Revision:
- 6:0e5b5019f1d5
- Parent:
- 3:2ca9ec946232
sync to lib changes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mega64 | 0:5057d688da32 | 1 | #include "mbed.h" |
mega64 | 0:5057d688da32 | 2 | |
mega64 | 1:5bc8c8e22eda | 3 | |
mega64 | 1:5bc8c8e22eda | 4 | |
mega64 | 1:5bc8c8e22eda | 5 | #if 0 |
mega64 | 2:7cc544472c34 | 6 | |
mega64 | 2:7cc544472c34 | 7 | //******system clock and time functions test****** |
mega64 | 2:7cc544472c34 | 8 | |
mega64 | 0:5057d688da32 | 9 | DigitalOut myled(PB_0); |
mega64 | 0:5057d688da32 | 10 | |
mega64 | 0:5057d688da32 | 11 | int main() |
mega64 | 0:5057d688da32 | 12 | { |
mega64 | 0:5057d688da32 | 13 | |
mega64 | 2:7cc544472c34 | 14 | // output on MCO1 pin 41 (PA8) |
mega64 | 0:5057d688da32 | 15 | HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_SYSCLK, RCC_MCODIV_1); // 24 MHz |
mega64 | 2:7cc544472c34 | 16 | // HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1); // 8 MHz (xtal) |
mega64 | 2:7cc544472c34 | 17 | // HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_PLLCLK, RCC_MCODIV_1); // 12 MHz |
mega64 | 2:7cc544472c34 | 18 | // HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1); // 8 MHz (RC gen) |
mega64 | 0:5057d688da32 | 19 | |
mega64 | 0:5057d688da32 | 20 | while(1) { |
mega64 | 1:5bc8c8e22eda | 21 | myled = 1; |
mega64 | 2:7cc544472c34 | 22 | wait(0.99); |
mega64 | 2:7cc544472c34 | 23 | myled = 0; |
mega64 | 2:7cc544472c34 | 24 | wait(0.01); |
mega64 | 2:7cc544472c34 | 25 | myled = 1; |
mega64 | 2:7cc544472c34 | 26 | wait(0.8); |
mega64 | 2:7cc544472c34 | 27 | myled = 0; |
mega64 | 1:5bc8c8e22eda | 28 | wait(0.2); |
mega64 | 2:7cc544472c34 | 29 | myled = 1; |
mega64 | 1:5bc8c8e22eda | 30 | HAL_Delay(1000); |
mega64 | 0:5057d688da32 | 31 | } |
mega64 | 0:5057d688da32 | 32 | } |
mega64 | 1:5bc8c8e22eda | 33 | #endif |
mega64 | 1:5bc8c8e22eda | 34 | |
mega64 | 3:2ca9ec946232 | 35 | |
mega64 | 3:2ca9ec946232 | 36 | |
mega64 | 3:2ca9ec946232 | 37 | |
mega64 | 2:7cc544472c34 | 38 | #if 0 |
mega64 | 2:7cc544472c34 | 39 | |
mega64 | 2:7cc544472c34 | 40 | //******stdio UART test****** |
mega64 | 3:2ca9ec946232 | 41 | // PA_2-TX; PA_3-RX |
mega64 | 2:7cc544472c34 | 42 | |
mega64 | 1:5bc8c8e22eda | 43 | DigitalOut myled(PB_0); |
mega64 | 1:5bc8c8e22eda | 44 | |
mega64 | 1:5bc8c8e22eda | 45 | int main() |
mega64 | 1:5bc8c8e22eda | 46 | { |
mega64 | 1:5bc8c8e22eda | 47 | myled=0; |
mega64 | 1:5bc8c8e22eda | 48 | printf("Hello World!\n"); |
mega64 | 1:5bc8c8e22eda | 49 | while(1) { |
mega64 | 1:5bc8c8e22eda | 50 | printf("Heartbeat!\n"); |
mega64 | 1:5bc8c8e22eda | 51 | wait(1); |
mega64 | 1:5bc8c8e22eda | 52 | myled=!myled; |
mega64 | 1:5bc8c8e22eda | 53 | } |
mega64 | 1:5bc8c8e22eda | 54 | } |
mega64 | 2:7cc544472c34 | 55 | #endif |
mega64 | 2:7cc544472c34 | 56 | |
mega64 | 2:7cc544472c34 | 57 | |
mega64 | 2:7cc544472c34 | 58 | |
mega64 | 3:2ca9ec946232 | 59 | #if 0 |
mega64 | 2:7cc544472c34 | 60 | |
mega64 | 2:7cc544472c34 | 61 | //******DAC test****** |
mega64 | 2:7cc544472c34 | 62 | |
mega64 | 2:7cc544472c34 | 63 | #include <math.h> |
mega64 | 2:7cc544472c34 | 64 | |
mega64 | 2:7cc544472c34 | 65 | AnalogOut dac1(PA_4); |
mega64 | 2:7cc544472c34 | 66 | AnalogOut dac2(PA_5); |
mega64 | 2:7cc544472c34 | 67 | int16_t k; |
mega64 | 2:7cc544472c34 | 68 | #define PI 3.14159265 |
mega64 | 2:7cc544472c34 | 69 | #define SIN1_ARRAY_SIZE 500 |
mega64 | 2:7cc544472c34 | 70 | uint16_t sin_data[SIN1_ARRAY_SIZE]; |
mega64 | 2:7cc544472c34 | 71 | |
mega64 | 2:7cc544472c34 | 72 | int main() |
mega64 | 2:7cc544472c34 | 73 | { |
mega64 | 3:2ca9ec946232 | 74 | for (k=0; k<SIN1_ARRAY_SIZE; k++) { |
mega64 | 2:7cc544472c34 | 75 | sin_data[k]= (1.0+sin(1.0*k/SIN1_ARRAY_SIZE*2.0*PI))/2*0xFFFF; |
mega64 | 2:7cc544472c34 | 76 | }; |
mega64 | 2:7cc544472c34 | 77 | |
mega64 | 2:7cc544472c34 | 78 | k=0; |
mega64 | 2:7cc544472c34 | 79 | while (1) { |
mega64 | 2:7cc544472c34 | 80 | dac1.write_u16 (sin_data[k]); |
mega64 | 2:7cc544472c34 | 81 | k++; |
mega64 | 2:7cc544472c34 | 82 | if (k>=SIN1_ARRAY_SIZE) { |
mega64 | 2:7cc544472c34 | 83 | k=0; |
mega64 | 2:7cc544472c34 | 84 | }; |
mega64 | 2:7cc544472c34 | 85 | dac2.write_u16(1.0*0xFFFF*k/SIN1_ARRAY_SIZE); |
mega64 | 2:7cc544472c34 | 86 | wait_us(25); |
mega64 | 2:7cc544472c34 | 87 | } |
mega64 | 2:7cc544472c34 | 88 | |
mega64 | 2:7cc544472c34 | 89 | |
mega64 | 2:7cc544472c34 | 90 | } |
mega64 | 3:2ca9ec946232 | 91 | #endif |
mega64 | 3:2ca9ec946232 | 92 | |
mega64 | 3:2ca9ec946232 | 93 | #if 1 |
mega64 | 3:2ca9ec946232 | 94 | |
mega64 | 3:2ca9ec946232 | 95 | //******ADC test****** |
mega64 | 3:2ca9ec946232 | 96 | // adapted from https://developer.mbed.org/teams/ST/code/Nucleo_analog_loop/ |
mega64 | 3:2ca9ec946232 | 97 | // connect tested ADC input to PA_4 |
mega64 | 3:2ca9ec946232 | 98 | |
mega64 | 3:2ca9ec946232 | 99 | // serial output on pins where not adc option |
mega64 | 3:2ca9ec946232 | 100 | Serial pc(PA_9, PA_10); // tx, rx |
mega64 | 3:2ca9ec946232 | 101 | |
mega64 | 3:2ca9ec946232 | 102 | // test signal source |
mega64 | 3:2ca9ec946232 | 103 | AnalogOut out(PA_4); |
mega64 | 3:2ca9ec946232 | 104 | |
mega64 | 3:2ca9ec946232 | 105 | |
mega64 | 3:2ca9ec946232 | 106 | // select tested ADC input |
mega64 | 3:2ca9ec946232 | 107 | #define ADC_IN 0 |
mega64 | 3:2ca9ec946232 | 108 | |
mega64 | 3:2ca9ec946232 | 109 | |
mega64 | 3:2ca9ec946232 | 110 | #if ADC_IN==0 |
mega64 | 3:2ca9ec946232 | 111 | AnalogIn in(PA_0); |
mega64 | 3:2ca9ec946232 | 112 | const char pin_name[]="PA_0"; |
mega64 | 3:2ca9ec946232 | 113 | #elif ADC_IN==1 |
mega64 | 3:2ca9ec946232 | 114 | AnalogIn in(PA_1); |
mega64 | 3:2ca9ec946232 | 115 | const char pin_name[]="PA_1"; |
mega64 | 3:2ca9ec946232 | 116 | #elif ADC_IN==2 |
mega64 | 3:2ca9ec946232 | 117 | AnalogIn in(PA_2); |
mega64 | 3:2ca9ec946232 | 118 | const char pin_name[]="PA_2"; |
mega64 | 3:2ca9ec946232 | 119 | #elif ADC_IN==3 |
mega64 | 3:2ca9ec946232 | 120 | AnalogIn in(PA_3); |
mega64 | 3:2ca9ec946232 | 121 | const char pin_name[]="PA_3"; |
mega64 | 3:2ca9ec946232 | 122 | #elif ADC_IN==4 |
mega64 | 3:2ca9ec946232 | 123 | AnalogIn in(PA_4); |
mega64 | 3:2ca9ec946232 | 124 | const char pin_name[]="PA_4"; |
mega64 | 3:2ca9ec946232 | 125 | #elif ADC_IN==5 |
mega64 | 3:2ca9ec946232 | 126 | AnalogIn in(PA_5); |
mega64 | 3:2ca9ec946232 | 127 | const char pin_name[]="PA_5"; |
mega64 | 3:2ca9ec946232 | 128 | #elif ADC_IN==6 |
mega64 | 3:2ca9ec946232 | 129 | AnalogIn in(PA_6); |
mega64 | 3:2ca9ec946232 | 130 | const char pin_name[]="PA_6"; |
mega64 | 3:2ca9ec946232 | 131 | #elif ADC_IN==7 |
mega64 | 3:2ca9ec946232 | 132 | AnalogIn in(PA_7); |
mega64 | 3:2ca9ec946232 | 133 | const char pin_name[]="PA_7"; |
mega64 | 3:2ca9ec946232 | 134 | #elif ADC_IN==8 |
mega64 | 3:2ca9ec946232 | 135 | AnalogIn in(PB_0); |
mega64 | 3:2ca9ec946232 | 136 | const char pin_name[]="PB_0"; |
mega64 | 3:2ca9ec946232 | 137 | #elif ADC_IN==9 |
mega64 | 3:2ca9ec946232 | 138 | AnalogIn in(PB_1); |
mega64 | 3:2ca9ec946232 | 139 | const char pin_name[]="PB_1"; |
mega64 | 3:2ca9ec946232 | 140 | #elif ADC_IN==10 |
mega64 | 3:2ca9ec946232 | 141 | AnalogIn in(PC_0); |
mega64 | 3:2ca9ec946232 | 142 | const char pin_name[]="PC_0"; |
mega64 | 3:2ca9ec946232 | 143 | #elif ADC_IN==11 |
mega64 | 3:2ca9ec946232 | 144 | AnalogIn in(PC_1); |
mega64 | 3:2ca9ec946232 | 145 | const char pin_name[]="PC_1"; |
mega64 | 3:2ca9ec946232 | 146 | #elif ADC_IN==12 |
mega64 | 3:2ca9ec946232 | 147 | AnalogIn in(PC_2); |
mega64 | 3:2ca9ec946232 | 148 | const char pin_name[]="PC_2"; |
mega64 | 3:2ca9ec946232 | 149 | #elif ADC_IN==13 |
mega64 | 3:2ca9ec946232 | 150 | AnalogIn in(PC_3); |
mega64 | 3:2ca9ec946232 | 151 | const char pin_name[]="PC_3"; |
mega64 | 3:2ca9ec946232 | 152 | #elif ADC_IN==14 |
mega64 | 3:2ca9ec946232 | 153 | AnalogIn in(PC_4); |
mega64 | 3:2ca9ec946232 | 154 | const char pin_name[]="PC_4"; |
mega64 | 3:2ca9ec946232 | 155 | #elif ADC_IN==15 |
mega64 | 3:2ca9ec946232 | 156 | AnalogIn in(PC_5); |
mega64 | 3:2ca9ec946232 | 157 | const char pin_name[]="PC_5"; |
mega64 | 3:2ca9ec946232 | 158 | #endif |
mega64 | 3:2ca9ec946232 | 159 | |
mega64 | 3:2ca9ec946232 | 160 | |
mega64 | 3:2ca9ec946232 | 161 | int main() |
mega64 | 3:2ca9ec946232 | 162 | { |
mega64 | 3:2ca9ec946232 | 163 | pc.printf("\nAnalog loop example\n"); |
mega64 | 3:2ca9ec946232 | 164 | pc.printf("*** Connect %s and PA_4 pins together ***\n",pin_name); |
mega64 | 3:2ca9ec946232 | 165 | while(1) { |
mega64 | 3:2ca9ec946232 | 166 | for (float out_value = 0.0f; out_value <= 1.0f; out_value += 0.05f) { |
mega64 | 3:2ca9ec946232 | 167 | // Output value using DAC |
mega64 | 3:2ca9ec946232 | 168 | out.write(out_value); |
mega64 | 3:2ca9ec946232 | 169 | wait(0.1); |
mega64 | 3:2ca9ec946232 | 170 | // Read ADC input |
mega64 | 3:2ca9ec946232 | 171 | float in_value = in.read(); |
mega64 | 3:2ca9ec946232 | 172 | // Display difference between two values |
mega64 | 3:2ca9ec946232 | 173 | float diff = out_value - in_value; |
mega64 | 3:2ca9ec946232 | 174 | pc.printf("(out:%.4f) - (in:%.4f) = (% .4f) ", out_value, in_value, diff); |
mega64 | 3:2ca9ec946232 | 175 | if (fabs(diff) > 0.03f) { |
mega64 | 3:2ca9ec946232 | 176 | pc.printf("FAIL\n"); |
mega64 | 3:2ca9ec946232 | 177 | } else { |
mega64 | 3:2ca9ec946232 | 178 | pc.printf("OK\n"); |
mega64 | 3:2ca9ec946232 | 179 | pc.printf("\033[1A"); // Moves cursor up of 1 line |
mega64 | 3:2ca9ec946232 | 180 | } |
mega64 | 3:2ca9ec946232 | 181 | } |
mega64 | 3:2ca9ec946232 | 182 | } |
mega64 | 3:2ca9ec946232 | 183 | } |
mega64 | 3:2ca9ec946232 | 184 | |
mega64 | 3:2ca9ec946232 | 185 | |
mega64 | 3:2ca9ec946232 | 186 | |
mega64 | 3:2ca9ec946232 | 187 | #endif |