国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux學習_GPIO中斷編程

這篇具有很好參考價值的文章主要介紹了Linux學習_GPIO中斷編程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


linux用戶態(tài)gpio中斷,linux,學習,單片機

配置GPIO口為輸入/中斷

  1. 使能GPIO口(從CCM里面找)
  2. 將該口設置工作在GPIO功能下(從MUX里面找)
  3. 選擇該口為輸入/輸出,中斷需要其工作在中斷/輸入模式下。

配置GPIO作為中斷的觸發(fā)方式

芯片手冊的GPIOx部分,可以設置其高電平/低電平/上升沿/下降沿/雙邊沿觸發(fā)。

清零中斷狀態(tài)

為防止先前留有其他的中斷狀態(tài)產生干擾,先對中斷狀態(tài)進行清除,置位ISR寄存器清除GPIO,并調用clear_gic_irq()函數清除GIC。

控制GPIO與GIC使能中斷

  1. 需要在GPIO_IMR寄存器中設置使能,否則該使能位默認置0屏蔽。
  2. 需要利用gic_enable_irq函數使能gic使其工作在irq狀態(tài)下。(函數輸入的中斷號從芯片手冊找)

CPU中斷使能

CPU的CPSR寄存器中有一位:I位,用來使能/禁止中斷
可以使用以下匯編指令修改I位:

CPSIE I  ; //清除I位,使能中斷
CPSID I  ; //設置I位,禁止中斷

CPSIE I ;這一行加入start.s中,放在main函數調用前。

start.s函數改寫

加入do_irq函數的定義

do_irq:
		/* 設置SP_irq */
		ldr sp, =STACK_BASE - STACK_SIZE - STACK_SIZE - STACK_SIZE
		
		/* 保存現場 */
		subs lr, lr, #4
		stmdb sp!, {R0-R3,R12,LR}
		
		/* 調用處理函數 */
		bl do_irq_c
		
		/* 恢復現場 */
		ldmia sp!, {R0-R3,R12,PC}^

在_start函數中加入:ldr PC, =do_irq;以將其加入調用文章來源地址http://www.zghlxwxcb.cn/news/detail-687781.html

寫處理函數

void do_irq_c(void)
{
	int irq;
	GPIO_Type *gpio4 = (GPIO_Type *)0x020A8000;
	/* 1. 分辨中斷 */
	irq = get_gic_irq();
	/* 2. 調用處理函數 */
	if (irq == IRQ_GPIO4_0_15)
	{
		if (gpio4->DR & (1<<14)) puts("KEY2 pressed!\n\r");
		else puts("KEY2 released!\n\r");
		gpio4->ISR |= (1<<14);//清除中斷源頭GPIO
	}
	/* 3. 清除中斷 */
	clear_gic_irq(irq);//清除中斷控制器gic
}

到了這里,關于Linux學習_GPIO中斷編程的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Linux GPIO模塊-RK3588 GPIO驅動分析

    Linux GPIO模塊-RK3588 GPIO驅動分析

    GPIO是可編程的通用I/O外設。如下圖所示,RK3588 GPIO控制器包含3個部分;APB接口模塊和SoC內部的APB總線連接,負責與SoC交換數據,位寬為32位;I/O port接口模塊管理外部的引腳,引腳的輸入和輸出都要經過該模塊;中斷探測模塊負責GPIO控制器的中斷上報與處理。 RK3588 GPIO控制器

    2023年04月15日
    瀏覽(25)
  • linux驅動-gpio

    linux驅動-gpio

    最近處理es8336聲卡問題,最后排查是spk_ctl_gpio和hp_det_gpio這兩個gpio導致的,所以惡補了一下gpio相關的知識,現在總結一下。 源代碼使用的是飛騰的gitee上開源的內核:https://gitee.com/phytium_embedded/phytium-linux-kernel.git 設備驅動層:定義了與硬件無關的GPIO API,包括GPIO的注冊、卸載

    2024年02月13日
    瀏覽(12)
  • 嵌入式學習筆記——使用寄存器編程操作GPIO

    嵌入式學習筆記——使用寄存器編程操作GPIO

    上一篇重點介紹了STM32 GPIO的輸入輸出模式,在整個框圖中我們發(fā)現需要我們使用代碼來控制GPIO的模式,本文的重點就是使用寄存器的編程方式,實現對于GPIO口的操作。 在這里首先需要做一個區(qū)分,我們常見的STM32的開發(fā)方式有兩種,也就是寄存器開發(fā)與庫函數開發(fā)。寄存器

    2023年04月09日
    瀏覽(44)
  • LINUX驅動之——GPIO的基本驅動

    LINUX驅動之——GPIO的基本驅動

    樓主在網上找了很多相關LINUX驅動開發(fā)的相關例程。發(fā)現基本的驅動開發(fā)都是有框架或者多種開發(fā)手段的,我們可以使用不同的開發(fā)方式來降低開發(fā)難度。有文件系統(tǒng)的開發(fā)和LINUX系統(tǒng)自帶的內核函數來開發(fā)。這兩者有什么區(qū)別呢?就像是單片機的庫函數開發(fā)和寄存器開發(fā)一樣

    2024年02月05日
    瀏覽(17)
  • Linux驅動開發(fā):gpio子系統(tǒng)

    目錄 1、GPIO配置流程 2、GPIO子系統(tǒng)API 2.1?of_find_node_by_path 2.2 of_get_named_gpio 2.3 gpio_request 與?gpiod_get 與?gpiod_get_index 2.4?gpio_direction_input 與?gpiod_direction_input 2.5?gpio_direction_output 與?gpiod_direction_output 2.6?gpio_get_value 與?gpiod_get_value 2.7?gpio_set_value 與?gpiod_set_value 2.8? gpiod_get_from

    2024年02月12日
    瀏覽(17)
  • Linux下控制GPIO的三種方法

    Linux下控制GPIO的三種方法

    https://blog.csdn.net/qq_41076734/article/details/124669908 1. 應用空間控制gpio 1.1簡介 在/sys/class/gpio/下有個export文件,向export文件寫入要操作的GPIO號,使得該GPIO的操作接口從內核空間暴露到用戶空間,GPIO的操作接口包括direction和value等,direction控制GPIO輸入或者輸出模式,而value可控制

    2024年02月03日
    瀏覽(19)
  • linux驅動_leds-gpio

    linux驅動_leds-gpio

    項目里面有幾個通信通道,每個通道有個狀態(tài)指示燈(LED)。預期斷開是滅,已連接是亮,數據傳輸時閃爍。一開始使用通用sysfs文件系統(tǒng)控制GPIO的方式控制,例如用以下腳本控制GPIO: 在應用軟件實現點燈邏輯,控制亮和滅都沒問題,但是閃爍功能的實時性太差,只能考慮別的

    2024年02月11日
    瀏覽(10)
  • 【Linux驅動開發(fā)】011 gpio子系統(tǒng)

    【Linux驅動開發(fā)】011 gpio子系統(tǒng)

    前面我們編寫了基于設備樹的 LED 驅動,但是驅動的本質還是沒變,都是配置 LED 燈所使用的 GPIO 寄存器,驅動開發(fā)方式和裸機基本沒啥區(qū)別。本章我們就來學習一下如何借助 pinctrl 和 gpio 子系統(tǒng)來簡化 GPIO 驅動開發(fā)。? ?Linux 內核針對 PIN 的配置推出了 pinctrl 子系統(tǒng),對于

    2024年02月03日
    瀏覽(18)
  • Linux 操作系統(tǒng)實戰(zhàn)視頻課 - GPIO 基礎介紹

    Linux 操作系統(tǒng)實戰(zhàn)視頻課 - GPIO 基礎介紹

    沉淀、分享、成長,讓自己和他人都能有所收獲!?? ??本篇我們將講解 GPIO 。 ARM 平臺中的 GPIO(通用輸入/輸出)是用于與外部設備進行數字輸入和輸出通信的重要硬件接口。ARM 平臺的 GPIO 特性可以根據具體的芯片和開發(fā)板而有所不同,但通常具有以下一般特性: 數字輸入

    2024年02月10日
    瀏覽(22)
  • STM32的HAL庫開發(fā)系列 - GPIO中斷/外部中斷EXTI

    STM32的HAL庫開發(fā)系列 - GPIO中斷/外部中斷EXTI 中斷它可以在GPIO口的電平發(fā)生變化時產生中斷,從而使得STM32微控制器能夠及時響應外部設備的變化。 STM32的GPIO中斷/外部中斷EXTI可以配置為上升沿中斷、下降沿中斷和雙邊沿中斷三種類型,分別在GPIO口電平從低電平變?yōu)楦唠娖?、?/p>

    2024年02月12日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包