當前位置:編程學習大全網 - 編程語言 - rcc編程

rcc編程

同學,妳這個問題需要根據實際情況來決定

例如,我們使用外部中斷。我根據自己的學習來說說使用外部中斷的壹般步驟:

1.初始化相應的GPIO端口。如果用GPIOB。

(1)首先定義用於初始化的結構的名稱。

GPIO _ init typedef GPIO _ init structure;

解釋:GPIO_InitTypeDef是stm32定義的結構,包含相應的成員變量。我們只需要定義結構的名稱,即GPIO_InitStructure,然後配置它的成員。

(2)打開GPIOB的時鐘。

打開時鐘,用系統給我們提供好的功能。

RCC _ APB 2 periphclock cmd(RCC _ APB 2 periph _ gpio b | RCC _ APB 2 periph _ AFIO,使能);

註意:因為要復用GPIO口,所以還要打開GPIO口的復用功能時鐘RCC _ AP B2 PERIPH _ AFIO;

(3)配置結構GPIO_InitStructure。

GPIO_InitStructure。GPIO _ Pin = GPIO _ Pin _ 0;//選擇引腳

GPIO_InitStructure。GPIO _ Mode = GPIO _ Mode _ IN _ IPU;//設置輸出模式。要改變模式,拉高stm32引腳以確保其處於高電平,並將其用作輸入引腳。

(4)這壹步我們不需要設置輸入速度。當GPIO端口用於輸入時,沒有必要配置速度。

GPIO_InitStructure。GPIO _ Speed = GPIO _ Speed _ 2MHz

(5)GPIO_Init(GPIOB,& ampGPIO _ init structure);//調用初始化函數將配置應用到GPIOB端口。

2.將GPIO連接到EXTI。

GPIO _ extiline config(GPIO _ PortSourceGPIOB,GPIO _ pin source 0);//將GPIOB0端口連接到EXTI0。可能有些同學不理解為什麽是EXTI0。這裏簡單說明壹下,GPIO口如果接0腳就對應EXTI0,如果是1腳就對應Exti1。

3.配置外部中斷的觸發模式。

EXTI _ init typedef EXTI _ init structure;

EXTI_InitStructure。EXTI _ Line = EXTI _ Line0

EXTI_InitStructure。EXTI _ Mode = EXTI _ Mode _中斷;

EXTI_InitStructure。EXTI _ Trigger = EXTI _ Trigger _ Rising;

EXTI_InitStructure。EXTI _ LineCmd = ENABLE

EXTI _ Init(& amp;EXTI _ init structure);

4.設置中斷優先級寄存器

NVIC _優先組配置(NVIC _優先組_ 2);//這裏我們選擇分組2,也就是說我們給搶占優先級賦2位,給響應優先級賦2位。

5.配置中斷控制寄存器(NVIC)

(1)NVIC _ InitTypeDef NVIC _ init structure;//這壹步是命名我們的結構,下面是配置結構。

(2)NVIC _有限結構。NVIC _ IRQ channel = ext i0 _ IRQn;//選擇中斷類型就是選擇外部中斷0。這些陳述實際上是stm32給我們的。中斷名是在IRQn_Type結構中為我們定義的。我們只需要選擇壹個我們想要使用的中斷。我們可以在stm32f10xx.h中找到

(3)NVIC _有限結構。NVIC _ IRQChannelPreemptionPriority = 0x 01;//設置搶占優先級。

(4)NVIC _有限結構。NVIC _ IRQChannelSubPriority = 0x 01;//設置響應優先級。

(5)NVIC _有限結構。NVIC _ IRQChannelCmd =使能;//設置開始中斷。可以理解為開啟總中斷。

(6)NVIC _ Init(& amp;NVIC _初始結構);//調用崩潰函數來初始化這個中斷。

6.最起碼別忘了在stm32f10x_it.c裏面寫中斷服務程序。不要忘記清除中斷標誌。

void PPP_IRQHandler(void)

{}

我們在這個函數裏寫壹個中斷程序,PPP的意思是設備。但是同學們要記住,我們不能只是在裏面寫字。我們應該寫PPP作為我們的中斷,void EXTI0_IRQHandler(void) {}

只有這樣,學生才會問這個名字是怎麽確定的。

答案是我們需要在stm32的匯編文件startup_stm32f1xx.s中找到每個中斷的名字。

慢慢學沒有我們想象的那麽難。

  • 上一篇:M24的螺紋怎麽加工?螺距是多少?牙深是多少?誰能告訴我?(圖紙上就標了個M24其他什麽都沒)。
  • 下一篇:想問下做ios平臺的軟件開發,需要那些基礎知識(ios軟件開發需要學什麽)
  • copyright 2024編程學習大全網