學習是不斷試錯的過程
在實現該boot之前,我其實對boot缺乏一個流程的瞭解,簡單的說就是對細節的理解,深入就必須把握細節,想了解細節,就必須不斷的試錯
SP20boot:
主要改動點:(1)增加校驗簽名的函數,(2)
面臨的問題:
:封裝好串口調試函數。打印是不能和下載同時使用的.查看裏面的boot是使用輪詢還是中斷,倆個不要重疊
設置按鍵檢測和按鍵進入進行下載的過程
1.這個功能,首先說按鍵
理論上這個按鍵左右兩個管腳的電平是這樣
輸出的驅動比輸入的驅動能力大(這個是慣性)
這個設計的核心思想:按鍵下去,按鍵的(1)輸入管腳的電平發生變化,(2)並且持續一段時間
其中輸入管腳設置成
gpio_set_pin_type(GPIOE, 6,GPIO_INPUT);
gpio_set_pin_pull(GPIOE, 6, PULL_UP); //這裏面上下拉無所謂,上拉意味着值爲1,那個另外一個管腳電平必須爲0,反過來也可以行得通。 設置爲輸入,拉高。 另外一個管腳的值必須設置成0
gpio_set_pin_val(GPIOE, 3, 0);
然後就行
delay_ms(1);
if(gpio_get_pin_val(GPIOE, 6) == 0)
{
delay_ms(20);
if(gpio_get_pin_val(GPIOE, 6) == 0)
return 1;
}
這個實現其實就是這兩個步驟了,前期需要初始化
另外一個設置按鍵掃描
int powerkey(void)
{
int i,value;
for(i=0;i< 20;i++)
{
value = gpio_get_pin_val(GPIOD,9);
if(value) break;
DelayMs(50);
}
if(i==20) return 1;
else return 0;
}