主要思路:
檔案從main.c檔案到main()函式開始:
主要重點是,開啟中斷:
usb_interrupts_config();
stm32不像c51微控制器那樣可以用過interrupt關鍵字來定義中斷響應函式,stm32的中斷響應函式介面存在中斷向量表中。
其格式如下:
在檔案hw_config.c裡:
/* enable the usb interrupt */
nvic_initstructure.nvic_irqchannel = usb_lp_can1_rx0_irqn;
nvic_initstructure.nvic_irqchannelpreemptionpriority = 1;
nvic_initstructure.nvic_irqchannelsubpriority = 0;
nvic_initstructure.nvic_irqchannelcmd = enable;
nvic_init(&nvic_initstructure);
在stm32f10x_it.c給予響應:
void usb_lp_can1_rx0_irqhandler(void) //usb_lp_can1_rx0_irqhandler 在這吃大虧啦,啟動**裡面帶1,這個不帶,
usb_istr(); 主要是對imr_msk 進行響應,其定義如下:
#define imr_msk (cntr_ctrm | cntr_wkupm | cntr_suspm | cntr_errm | cntr_sofm \
| cntr_esofm | cntr_resetm )
我們關注的其實就是ctr(控制)函式了:
ctr_lp();
其主要會呼叫兩個函式:
void ep1_out_callback(void);
void ep2_in_callback(void);
關於微控制器主要的流程是usb_istr中斷的呼叫,利用中斷與主機host資料交換。
STM32F10x系列 中斷
概念問題 中斷與事件有什麼聯絡與區別?stm32之中斷與事件 中斷與事件的區別 簡單概括下。中斷 cpu單執行緒情況下只能處理單一任務,在有零時任務需要處理時,可以暫時放下當前任務,優先處理零時任務,再回過來處理之前的任務。多個中斷可以進行巢狀,比如產生了多個零時任務,那麼就可以按照優先順序處理這多...
STM32F10X入門 流水燈
2019 3 16 2019 3 19 core cm32.c stdin.h中定義了字元型 stm32f10x.h stm32f10x conf.h中定義了引用的外設標頭檔案 庫檔案之間的依賴呼叫關係 pngstm32f10x.h檢視位址對映 比如define gpioa base apb2per...
STM32F10X 位帶操作
在stm32微控制器的學習中,有乙個最大的特點就是你所編寫的stm32的程式操作,基本上都是匯流排的操作,比如gpiob odr 0x0001 或者直接等於1 這樣的操作必須要考慮整個暫存器的資料,但其實如果學過51微控制器的人都知道,我們除了對於匯流排操作外,我們還是經常會對單獨的位進行操作,比如...