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".

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?

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