關於STM32中CAN中斷的使用

2021-07-24 20:49:56 字數 1459 閱讀 8780

「如果你用的can引腳是pa11和pa12,接收中斷用can1_rx0_irqn。如果can引腳用的是pb8和pb9,也就是用重定義的引腳,接收中斷用can1_rx1_irqn。由於pa11和pa12也是usb的引腳,所以非互聯型且帶can控制器的微控制器的庫檔案在起名字時用了usb_lp_can1_rx0_irqn。」具體的定義可以參考stm32f10x.h檔案,其中對不同型號的中斷有具體的定義。

示例如下:

1. 配置過濾器

can_filterinitstructure.can_filternumber = 0;

can_filterinitstructure.can_filtermode = can_filtermode_idmask;

can_filterinitstructure.can_filterscale = can_filterscale_32bit;

can_filterinitstructure.can_filteridhigh = 0x0000;

can_filterinitstructure.can_filteridlow = 0x0000;

can_filterinitstructure.can_filtermaskidhigh = 0x0000;

can_filterinitstructure.can_filtermaskidlow = 0x0000;

can_filterinitstructure.can_filterfifoassignment = can_fifo0; 

//關聯fifo0

can_filterinitstructure.can_filteractivation = enable;

can_filterinit(&can_filterinitstructure);

can_filterinitstructure.can_filternumber = 14;

can_filterinitstructure.can_filterfifoassignment = can_fifo1; 

//關聯fifo1

can_filterinit(&can_filterinitstructure);

2. 開啟can中斷

can_itconfig(can1, can_it_fmp0, enable);

can_itconfig(can1, can_it_fmp1, enable);

can_itconfig(can2, can_it_fmp0, enable);

can_itconfig(can2, can_it_fmp1, enable);

3. 中斷處理函式

void can1_rx0_irqhandler(void)

void can1_rx1_irqhandler(void)

void can2_rx0_irqhandler(void)

void can2_rx1_irqhandler(void)

STM32中斷的使能

lib v3.0.0 的標頭檔案misc.c的void nvic init nvic inittypedef nvic initstruct 說 enable the selected irq channels nvic iser nvic initstruct nvic irqchannel 0x...

關於STM32空閒中斷

有一次做乙個東西,為了盡量不占用cpu的處理資料時間,所以就使用dma接收串列埠的資料,但是呢問題來了.怎麼樣才能確定接收到了一條完整的資料了,我們都知道只要開啟dma 那傢伙就不停的把接收的資料放到我們指定的地方.只要接收到一條完整的資料我就該去處理了 關於空閒中斷,就是說每接收到一條完整的資料就...

stm32中斷優先順序 STM32中斷系統

stm32 中斷非常強大,幾乎每個外設都可以產生中斷,因此這裡我們單獨使用一章來介紹它,為後面介紹外設中斷做鋪墊。學習本章可以參考 stm32f10x中文參考手冊 9 中斷和事件章節,cortex m3 權威指南 中文 chpt08 nvic與中斷控制章節。中斷概念 在學習 51 微控制器時,我們就...