1、nvic 巢狀向量中斷控制器 即中斷優先順序管理
scr->aircr暫存器 bit10~8
111 0位搶占優先順序 4位響應優先順序【這是整個系統的】
每乙個中斷( 對應ip暫存器) 可設定成搶占優先順序~~ 響應優先順序0~16【這是對應具體乙個中斷的】
110 1位搶占優先順序 3位響應優先順序
ip 可設定搶占優先順序0或1 響應優先順序0~7
101 2位搶占優先順序 2位響應優先順序
ip 搶占0~3 響應0~3
100 3位搶占優先順序 1位響應優先順序
011 4位搶占優先順序 0位響應優先順序
數值越小 級別越高
2、中斷.c配置 怎麼寫?
系統
nvic_prioritygroupconfig(nvic_prioritygroup_2); //或者0 1 2 3 4
priority 優先 優先權 n.
configuration 配置 n.
具體到每個中斷
nvic_inittype nvic_initstructure;
nvic_initstructure.nvic_ibqchannel=usart1_irqn; //串列埠1中斷 哪個通道?ibq
nvic_initstructure.nvic_ibqchannelpreemptionpriority=1; //搶占優先順序1
nvic_initstructure.nvic_ibqchannelsubpriority=2; //響應(子)優先順序2
nvic_initstructure.nvic_ibqchannelcmd=enable; //使能ibq通道
nvic_init(&nvic_initstructure); //初始化
preemption 先佔 先發制人
handler 處理n.
3、串列埠中斷服務程式.c 怎麼寫?
void usart1_irqhandler(void) //這是中斷服務函式,這個函式名不能隨便寫 在startup.stm32f10x.hd.s中有定義
u8 res; //接受到的資料
/*呼叫各種串列埠操作庫函式 */
if(usart_getitstatus(usart1,usart_it_rxne)
res=usart_receivedata(usart1);
usart_senddata(usart1,res);
例如:itstatus usart_getitstatus(usart_typedef* usartx, unit 16_t usart_it); //獲取中斷狀態標誌位函式
if(usart_getitstatus(usart1, usart_it_rxne) ) //開啟串列埠1接收中斷 當串列埠1接收到資料時會觸發此中斷
void usart_senddata(usart_typedef*usartx*, unit16_t usart_it); //串列埠資料傳送
1 、usart_senddata(usart1,res);
void usart_receivedata(usart_typedef*usartx); //串列埠資料接收
res=usart_receivedata( usart1);
flagstatus usart_getflagstatus(usart_typedef* usartx, uint16_t usart_flag) //等待資料傳送完畢
2 、while(usart_getflagstatus(usart1, usart_flag_tc)==reset);
status 狀態
正點原子的串列埠函式 接收協議?
STM32F103C8T6 內部 FLASH讀寫
u16 people id 50 假設公司最多50人 u16 people clock t 50 每個人簽到次數 u16 people num 2 人數 define debug define flash size 64 所選mcu的flash容量大小 單位為k if flash size 256 ...
《STM32》F103C8T6最小系統
復位電路是一種用來使電路恢復到起始狀態的電路裝置,它的操作原理與計算器有著異曲同工之妙,只是啟動原理和手段有所不同。復位電路,就是利用它把電路恢復到起始狀態。就像計算器的清零按鈕的作用一樣,以便回到原始狀態,重新進行計算。和計算器清零按鈕有所不同的是,復位電路啟動的手段有所不同。一是在給電路通電時馬...
有關STM32F103C8T6的超頻
閒來無事突然對32的超頻來了興趣。其實是學校有個實訓,給的微控制器是stm32f1做,想著能弄的更好點就想著把f1超頻一下,感覺能完成更多的事情吧。平台是 上通用的st32f103c8t6最小系統板。看了正點原子的論壇之後感覺,雖然很多大佬都超頻過,但是具體超頻的方法好像沒有路子,我查了好久是沒有查...