欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:第十四屆單片機嵌入式藍橋杯

柚子快報激活碼778899分享:第十四屆單片機嵌入式藍橋杯

http://yzkb.51969.com/

一、CubeMx配置

(1)LED配置

(1)LED燈里面用到了SN74HC573ADWR鎖存器,這個鎖存器有一個LE引腳,這個是我們芯片的鎖存引腳(使能引腳),由PD2這個端口來控制的

(2)LD1~LD8這八個LED燈由PC8~PC15這八個端口控制,且因為LD左端通過300歐的電阻連到了VDD(電源的正引腳) ,若想要點亮LED燈的話,則需要給PC8~PC15低電平,這樣燈才會亮,電流會從VDD順著LED流到PC8

(2)定時器配置

? ? ? ? ?根據(jù)題目需要配置PA1和PA7的定時器端口

? ? ? ? ?因為通過PA1引腳輸出頻率、占空比可調(diào)節(jié)的脈沖信號,所以預(yù)分頻器可以不用寫,就直接不分頻

?

? ? ? ? ?通過PA7引腳完成脈沖捕獲功能

(3)按鍵配置

(4)設(shè)置一個用于中斷任務(wù)的定時器(1ms的定時器)并且使能其更新中斷

?(5)使能中斷

(6)ADC配置

? ? ? ? ?因為題目是通過R37來調(diào)節(jié)占空比的 ,但是R37是CubeMx中的PB15,所以需要用它來配置ADC

?二、keil5配置

(1)添加lcd文件

? ? ? ? 可以看前面的csdn看看怎么要添加文件

(2)添加頭文件

#include "lcd.h"

#include "stdio.h"

#include "stdlib.h"

#include "string.h" //字符串

#include "math.h" //數(shù)據(jù)庫

?(3)不要忘了開下載的魔術(shù)棒

三、做題代碼

3.1

(1)按鍵按下切換界面的代碼【一般的】

//*********************這些都是寫在int main 函數(shù)外面的代碼********************************

//按鍵有關(guān)的定義

uint8_t key_state=0; //按鍵的模式:0,1,2,3

int keypresstime[4]={0};//一共有四個按鍵

//按鍵的函數(shù)(底層)

char Key_scan(void) //這里的函數(shù)要用char 不能用void 因為有返回值

{

if(!HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0))keypresstime[0]++;

//如果按鍵按下,就開始計時(前面有一個!是代表非0)

else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)&&keypresstime[0]>20){keypresstime[0]=0;return 1;}

//如果按鍵松開,而且此時的按鍵時長>20ms(也相當(dāng)于是按下的消抖)。那么按鍵的時間清零且此時回到按鍵按下前的狀態(tài)

else if(!HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1))keypresstime[1]++;

else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)&&keypresstime[1]>20){keypresstime[1]=0;return 2;}

else if(!HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2))keypresstime[2]++;

else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)&&keypresstime[2]>20){keypresstime[2]=0;return 3;}

else if(!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0))keypresstime[3]++;

else if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)&&keypresstime[3]>20){keypresstime[3]=0;return 4;}

else {keypresstime[0]=0;keypresstime[1]=0;keypresstime[2]=0;keypresstime[3]=0;} //如果什么都沒發(fā)生

return 0;

}

//**********************************切記:一定要打開定時器********************************

HAL_TIM_Base_Start_IT(&htim6);

//***********************************這些是放在while循環(huán)里面的函數(shù)************************

if(Flag_lcd==0)LCD_data();

else if (Flag_lcd==1)LCD_para();

else if (Flag_lcd==2)LCD_recd();

LCD_show();//如果不添加這個的話,就沒辦法顯示界面的內(nèi)容

//上面的是顯示界面

if(key_state==1)

{

Flag_lcd++;

Flag_lcd=Flag_lcd>2?0:Flag_lcd;

//如果>2的話,那么就把Flag_lcd變成0

//當(dāng)然這一句也可以變成一個if循環(huán)來表達

}

//這個是按鍵按下切換界面的代碼

(2)按鍵按下切換界面的代碼【最好的】

? ? ? ? ?其實不太理解這個底層函數(shù)的邏輯

//*********************這些都是寫在int main 函數(shù)外面的代碼

//按鍵有關(guān)的定義

struct keys

{

unsigned char judge_sta;

bool key_sta;

bool single_flag;

bool long_flag;

unsigned int key_time;

};//定義幾個標志位

struct keys key[4]={0,0,0}; //有四個按鍵

//按鍵的底層函數(shù)(放在中斷回調(diào)函數(shù)里面)

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

if(htim->Instance==TIM6)//開的中斷的定時器

{

//按鍵部分

key[0].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0);

key[1].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1);

key[2].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2);

key[3].key_sta=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);

for(int i=0;i<4;i++)

{

switch (key[i].judge_sta)

{

case 0: //消抖

{

if(key[i].key_sta==0)

{

key[i].judge_sta=1;

key[i].key_time=0;

}

}

break;

case 1:

{

if(key[i].key_sta==0) ///確定按下

{

key[i].judge_sta=2;

}

else key[i].judge_sta=0;

}

break;

case 2:

{

if(key[i].key_sta==1)

{

key[i].judge_sta=0;

if(key[i].key_time<70)

{

key[i].single_flag=1; //單機

}

}

else

{

key[i].key_time++;

if(key[i].key_time>70) key[i].long_flag=1; //長按

}

}

break;

}

}

}

}

//**********************************切記:一定要打開定時器

HAL_TIM_Base_Start_IT(&htim6);

//***********************************這些是放在while循環(huán)里面的函數(shù)

if(Flag_lcd==0)LCD_data();

else if (Flag_lcd==1)LCD_para();

else if (Flag_lcd==2)LCD_recd();

LCD_show();//如果不添加這個的話,就沒辦法顯示界面的內(nèi)容

if(Flag_lcd==0)LCD_data();

else if (Flag_lcd==1)LCD_para();

else if (Flag_lcd==2)LCD_recd();

LCD_show();//如果不添加這個的話,就沒辦法顯示界面的內(nèi)容

3.2

四、不理解的代碼

(1)

五、出現(xiàn)問題的步驟

(1)LCD不顯示界面?

? ? ? ? ?這個問題是因為這個頻率最開始設(shè)置的是8,應(yīng)該設(shè)置的頻率是24

?(2)按鍵無法執(zhí)行切換頁面的任務(wù)

? ? ? ? ?按鍵無法執(zhí)行相應(yīng)的任務(wù)是因為這幾個配置我最開始配置成了GPIO_Output

柚子快報激活碼778899分享:第十四屆單片機嵌入式藍橋杯

http://yzkb.51969.com/

相關(guān)閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19599588.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄