//adc配置及換算pb0對應adc1,pb0引腳可復用成adc_in8
rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable);//使能時鐘訊號
rcc_apb2periphclockcmd(rcc_apb2periph_adc1, enable);
gpio_initstructure.gpio_mode = gpio_mode_ain;//io配置
gpio_initstructure.gpio_pin = gpio_pin_0;
gpio_init(gpiob, &gpio_initstructure);
。。。。。//adc配置
adc_cmd(adc1, enable);// 先復位校正,再開啟校正。
//有一點是需要注意的,我們在對adc校準的前,
//必須把adc使能adc_cmd(adc1, enable);
//否則將卡在校準處程式卡死。
adc_resetcalibration(adc1);
while(adc_getresetcalibrationstatus(adc1));
adc_startcalibration(adc1);
while(adc_getcalibrationstatus(adc1));
u16 get_adc(void)
adc_value=get_adc()*3.3/4096;//stm32f103rbt6的adc是精度是12位了(也就是0~4096),
因此我們讀出來的ad值資料是12位的,
用通俗的話來講就是把3.3v分成4096份。
sprintf((char *)adc_string,「get adc_value:%.2fv」,adc_value);
lcd_displaystringline(line4,adc_string);
//實時時鐘rcc_apb1periphclockcmd(rcc_apb1periph_pwr, enable);
rcc_apb1periphclockcmd(rcc_apb1periph_bkp, enable);
rtc_setprescaler(39999);
rtc_waitforlasttask();
rtc_setcounter(233600+5560+50);
rtc_waitforlasttask();
void rtc_irqhandler(void)//rtc中斷
}void time_display(uint32_t timevar)//rtc顯示時間
thh = timevar / 3600;
tmm = (timevar % 3600) / 60;
tss = (timevar % 3600) % 60;
sprintf((char *)string2,「time: %0.2d:%0.2d:%0.2d」, thh, tmm, tss);
lcd_displaystringline(line9,string2);
}while(1) }
//串列埠通訊
乙個是串列埠1(pa9,pa10),乙個是串列埠2(pa2,pa3),
pa2->tx為傳送端,pa3->rx為接收端。
不過,我們的藍橋杯嵌入式開發板並不能直接使用串列埠1,
雖然確實有串列埠1的電路,但是它連線的確實rs232的9針串列埠上,
也就是說,我們不能直接通過usb去使用到這串列埠,
因此我們一般都用不了這個串列埠。
rcc_apb2periphclockcmd(rcc_apb2periph_gpioa, enable);
rcc_apb1periphclockcmd(rcc_apb1periph_usart2, enable);
gpio_initstructure.gpio_pin = gpio_pin_2;//pa2->tx為傳送端
gpio_initstructure.gpio_mode = gpio_mode_af_pp;
gpio_initstructure.gpio_speed = gpio_speed_50mhz;
gpio_init(gpioa, &gpio_initstructure);
gpio_initstructure.gpio_pin = gpio_pin_3;//pa3->rx為接收端
gpio_initstructure.gpio_mode = gpio_mode_in_floating;
gpio_init(gpioa, &gpio_initstructure);
void usart_sendstring(uint8_t *str)//串列埠傳送資料
while(str[index] != 0);
void usart2_irqhandler(void)//中斷,串列埠接收資料
else
//中斷
//定時器
這兩個的話應該不用說了吧;畢竟上面的內容都涉及到了它們~
藍橋杯嵌入式 USART
乙個是串列埠 1 pa9,pa10 乙個是串列埠 2 pa2,pa3 我們的藍橋杯嵌入式開發板並不能直接使用串列埠 1rxbuf 是用來儲存串列埠的接收資料的,rxover 為接收串列埠結束標誌位,rxcunt 為串列埠接收計數值 ifndef usart h define usart h incl...
藍橋杯嵌入式 LCD
include stm32f10x.h include lcd.h include stdio.h u8 string 20 u8 temp 30 float ao 3.81 u32 timingdelay 0 void delay ms u32 ntime main body int main v...
藍橋杯嵌入式 RTC
bkp裡是關於備份暫存器的庫函式,pwr裡是關於電源管理的庫函式 ifndef rtc h define rtc h include stm32f10x.h void rtc init u8 hh,u8 mm,u8 ss endif include rtc.h void rtc init u8 hh...