系統異常中斷與外部中斷統稱為中斷,復位中斷的優先級最高,
NVIC(NestedVectored Interrupt Controller)嵌套向量中斷控制器,調整各個中斷的優先級,
中斷優先級 =搶占優先級(1-4bit)+子優先級(0、1)如果兩個中斷的搶占優先級與子優先級參數一致,則按照中斷向量表里的順序區分優先級。GPIO的中斷,EXTI(External interrupt/event controller)外部中斷/事件(event)控制器,外部中斷為用戶自定義中斷內容(用戶編寫程序發生中斷后要干啥事兒),外部事件為具體對應外設自動執行,EXTI 0-15總共16個,GPIO A-G當中的pin尾數與EXTI尾數對應,
例如: GPIOA_Pin_0、GPIOB_Pin_0都對應 EXTI 0;
GPIOA_Pin_1、GPIOB_Pin_1都對應EXTI 1;
中斷內部的程序盡量簡單(只改個標志位值flag啥的),處理函數放在主函數比較穩妥,中斷占用太多資源,則其他中斷就歇菜了。假設主函數要處理的問題需要對應的技能類似于孫悟空的72變,那么中斷要處理的棘手問題需要對應的技能類似于觀音給予孫悟空的三根毫毛,別沒啥事兒瞎用。
串口分類及電平都在右側了。
串口助手用:Mobaxterm,
在STM32項目里,Keil Options forTarget里勾選右側 Use Micro LIB,
添加如下代碼就可以在Keil里使用printf函數了。
代碼:
#include "stdio.h" //標準輸入輸出頭文件
int fputc(int ch, FILE *f) //寫字符文件函數
{
HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, 10);
return ch;
}
int fgetc(FILE *f) //讀字符文件函數
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, (uint8_t*)&ch, 1, 10);
return (int)ch;
}
//添加以上代碼 + √選 UseMicro LIB 后,就可以調用printf函數
審核編輯:符乾江
-
單片機
+關注
關注
6037文章
44561瀏覽量
635594 -
STM32
+關注
關注
2270文章
10901瀏覽量
356196 -
編程
+關注
關注
88文章
3616瀏覽量
93760
發布評論請先 登錄
相關推薦
評論