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
- Committer:
- mega64
- Date:
- 2017-03-19
- Revision:
- 6:0e5b5019f1d5
- Parent:
- 3:2ca9ec946232
File content as of revision 6:0e5b5019f1d5:
#include "mbed.h" #if 0 //******system clock and time functions test****** DigitalOut myled(PB_0); int main() { // output on MCO1 pin 41 (PA8) HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_SYSCLK, RCC_MCODIV_1); // 24 MHz // HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1); // 8 MHz (xtal) // HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_PLLCLK, RCC_MCODIV_1); // 12 MHz // HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1); // 8 MHz (RC gen) while(1) { myled = 1; wait(0.99); myled = 0; wait(0.01); myled = 1; wait(0.8); myled = 0; wait(0.2); myled = 1; HAL_Delay(1000); } } #endif #if 0 //******stdio UART test****** // PA_2-TX; PA_3-RX DigitalOut myled(PB_0); int main() { myled=0; printf("Hello World!\n"); while(1) { printf("Heartbeat!\n"); wait(1); myled=!myled; } } #endif #if 0 //******DAC test****** #include <math.h> AnalogOut dac1(PA_4); AnalogOut dac2(PA_5); int16_t k; #define PI 3.14159265 #define SIN1_ARRAY_SIZE 500 uint16_t sin_data[SIN1_ARRAY_SIZE]; int main() { for (k=0; k<SIN1_ARRAY_SIZE; k++) { sin_data[k]= (1.0+sin(1.0*k/SIN1_ARRAY_SIZE*2.0*PI))/2*0xFFFF; }; k=0; while (1) { dac1.write_u16 (sin_data[k]); k++; if (k>=SIN1_ARRAY_SIZE) { k=0; }; dac2.write_u16(1.0*0xFFFF*k/SIN1_ARRAY_SIZE); wait_us(25); } } #endif #if 1 //******ADC test****** // adapted from https://developer.mbed.org/teams/ST/code/Nucleo_analog_loop/ // connect tested ADC input to PA_4 // serial output on pins where not adc option Serial pc(PA_9, PA_10); // tx, rx // test signal source AnalogOut out(PA_4); // select tested ADC input #define ADC_IN 0 #if ADC_IN==0 AnalogIn in(PA_0); const char pin_name[]="PA_0"; #elif ADC_IN==1 AnalogIn in(PA_1); const char pin_name[]="PA_1"; #elif ADC_IN==2 AnalogIn in(PA_2); const char pin_name[]="PA_2"; #elif ADC_IN==3 AnalogIn in(PA_3); const char pin_name[]="PA_3"; #elif ADC_IN==4 AnalogIn in(PA_4); const char pin_name[]="PA_4"; #elif ADC_IN==5 AnalogIn in(PA_5); const char pin_name[]="PA_5"; #elif ADC_IN==6 AnalogIn in(PA_6); const char pin_name[]="PA_6"; #elif ADC_IN==7 AnalogIn in(PA_7); const char pin_name[]="PA_7"; #elif ADC_IN==8 AnalogIn in(PB_0); const char pin_name[]="PB_0"; #elif ADC_IN==9 AnalogIn in(PB_1); const char pin_name[]="PB_1"; #elif ADC_IN==10 AnalogIn in(PC_0); const char pin_name[]="PC_0"; #elif ADC_IN==11 AnalogIn in(PC_1); const char pin_name[]="PC_1"; #elif ADC_IN==12 AnalogIn in(PC_2); const char pin_name[]="PC_2"; #elif ADC_IN==13 AnalogIn in(PC_3); const char pin_name[]="PC_3"; #elif ADC_IN==14 AnalogIn in(PC_4); const char pin_name[]="PC_4"; #elif ADC_IN==15 AnalogIn in(PC_5); const char pin_name[]="PC_5"; #endif int main() { pc.printf("\nAnalog loop example\n"); pc.printf("*** Connect %s and PA_4 pins together ***\n",pin_name); while(1) { for (float out_value = 0.0f; out_value <= 1.0f; out_value += 0.05f) { // Output value using DAC out.write(out_value); wait(0.1); // Read ADC input float in_value = in.read(); // Display difference between two values float diff = out_value - in_value; pc.printf("(out:%.4f) - (in:%.4f) = (% .4f) ", out_value, in_value, diff); if (fabs(diff) > 0.03f) { pc.printf("FAIL\n"); } else { pc.printf("OK\n"); pc.printf("\033[1A"); // Moves cursor up of 1 line } } } } #endif