mbed. – , ++, -, - . , . « » , . ++, – ?
STM Nucleo F030, . , , , . .
« ». – . , – «Hello world» – . :
#include "mbed.h"
DigitalOut myled(LED1);
int main() {
    while(1)
    {
        wait_ms(500);
        myled = myled ^ 1;
    }
}
, ? !
, «Hello world» :
#include "mbed.h"
Serial pc(USBTX, USBRX);
int main() {
    pc.printf("Hello world\n\r");
    while(1)
    {
    }
}
? « » , ? , , , , – .
. , – ! - , , 5… …
« ». . : «
 C++, , char* , . «foo»+«bar», , , char*. Windows LPTSTR , char* wchar_t TCHAR — , .»
, , ( «hello world» ), , , , . …
, , . , , , . ? mbed.h ?
, mbed – c , , . , , , . . , , , ( , mbed ):
  RCC_OscInitTypeDef str;
  RCC_ClkInitTypeDef clk;
    pc.printf("SystemCoreClock = %d Hz\n\r", HAL_RCC_GetSysClockFreq());
    
    HAL_RCC_GetOscConfig(&str);
    pc.printf("->HSIState %d\n\r", str.HSIState);
    pc.printf("->PLL.PLLState %d\n\r", str.PLL.PLLState);
    pc.printf("->PLL.PLLSource %d\n\r", str.PLL.PLLSource);
    pc.printf("->PLL.PLLMUL %d\n\r", str.PLL.PLLMUL);
    pc.printf("->PLL.PREDIV %d\n\r", str.PLL.PREDIV);
    pc.printf("\n\r");
    
    HAL_RCC_GetClockConfig(&clk, &flat);
    pc.printf("ClockType %d\n\r", clk.ClockType);
    pc.printf("SYSCLKSource %d\n\r", clk.SYSCLKSource );
    pc.printf("AHBCLKDivider  %d\n\r", clk.AHBCLKDivider );
    pc.printf("APB1CLKDivider %d\n\r", clk.APB1CLKDivider );
, 48 , .
, . wait_ms() :
   Timer timer;
    timer.start();
    while(1) {
        myled ^= 1;
        t1 = timer.read_ms();
        t2 = timer.read_ms();
        while (t2 - t1 < 500)
        {
            t2 = timer.read_ms();
        }
    }
, ? - 5 …
, , , , , , , . , …
STM F030 TIM1, , . .
, . , , ? :
pc.printf("PSC: %d\n\r", TIM1->PSC);
! , : 7. PSC (? ?) , . . 48 , 7, 47. 7 , , , .. 8 , PLL , 6, 48 . , …
, . ? :
: SetSysClock_PLL_HSI() -> HAL_RCC_OscConfig(), HAL_RCC_ClockConfig() -> HAL_InitTick() – , .
: HAL_Init() -> HAL_InitTick() -> HAL_TIM_Base_Init() -> TIM_Base_SetConfig() -> TIMx->PSC – - HAL_InitTick PSC , …
– , STM F0 . HAL_Init()!
, HAL_InitTick(), :
    static uint32_t ticker_inited=0;  
    if(ticker_inited)return HAL_OK;
    ticker_inited=1;
. - , . , , …
, : main :
TIM1->PSC = (SystemCoreClock / 1000000) - 1;
- 1 …
, -, mbed ? ?
, , . – , . - . DS1820, . , . , – -
#include "DS1820.h"
DS1820 probe[1] = {D4}; 
probe[0].convert_temperature(DS1820::all_devices);
float temperature = probe[0].temperature('c');
, ? . :)
, . , mbed, . .
. . , .. . , . mbed DigitalInOut, GPIO . - :
bool DS1820::onewire_bit_in(DigitalInOut *pin) {
    bool answer;
    pin->output();
    pin->write(0);
    wait_us(3);                 
    pin->input();
    wait_us(10); 
    answer = pin->read();
    wait_us(45); 
    return answer;
}
«1 -> 0 -> 1» , . ? :

, , , , , 15 .
, , . . ?
, , :
    pin->output();
    t1 = timer.read_us();
    pin->input();
    t4 = timer.read_us();
    pc.printf("Time: %d us\n\r", t4-t1);
, , , 48 GPIO (- , ), mbed, ++ , ?
13 .
, 15. wait_us(10) , answer = pin->read(); , , 2 . , .
, STM GPIO. Input PullDown . , pin->mode(PullUp) pin->input() 6 .
, .
. , DS1820 , DHT21, , , . 1-wire , . , GPIO input interrupt, . mbed . , .
, . , «1 -> 0 -> 1» .
mbed . DigitalInOut, . InterruptIn, . PullDown, , , .. PullUp, PullDown , 0.
. , , , . …
. , , . , . , , . .