S5PV210 串口實驗(中斷方式)

来源:https://www.cnblogs.com/GyForever1004/archive/2018/02/16/8450157.html
-Advertisement-
Play Games

結合之前的 "串口實驗(輪詢方式)" 與 "中斷體系分析" ,我們來做下中斷方式的串口接收實驗。 start.S ~~~~ .global _start .global IRQ_handle _start: / 關 Watch Dog / ldr r0, =0xE2700000 mov r1, 0 ...


結合之前的串口實驗(輪詢方式)中斷體系分析,我們來做下中斷方式的串口接收實驗。

start.S

.global _start
.global IRQ_handle

_start:
    /* 關 Watch Dog */
    ldr r0, =0xE2700000
    mov r1, #0
    str r1, [r0]

    /* 設置系統模式棧指針 */
    ldr sp, =0x40000000

    /* 開 IRQ 總中斷開關 */
    mov r0, #0x53
    msr CPSR_cxsf, r0

    /* 時鐘初始化 */
    bl clock_init

    bl main

halt:
    b halt

IRQ_handle:
    /* 設置 IRQ 模式棧指針 */
    ldr sp, =0xD0037F80

    /* 設置 lr */
    sub lr, lr, #4
    stmfd sp!, {r0-r12, lr}

    /* 另一個 ISR 的介面 */
    bl  irq_handler

    /* 彈出保存的數據 */
    ldmfd sp!, {r0-r12, pc}^

配置串口

#define UART_UBRDIV_VAL     34
#define UART_UDIVSLOT_VAL   0xDFDD

void uart_init()
{
    /* 配置引腳為串口模式 */
    GPA0CON = 0x22;

    /* 不使用 FIFO */
    UFCON0 = 0x00;
    
    /* 無流控 */
    UMCON0 = 0x00;
    
    /* 配置數據格式 */
    ULCON0 = 0x03;
    
    /* 配置 UART */
    UCON0  = 0x105;

    /* 配置波特率 */
    UBRDIV0 = UART_UBRDIV_VAL;
    UDIVSLOT0 = UART_UDIVSLOT_VAL;

    /* 開放 RX0 中斷 */
    UINTM = 0x0e;
}

配置中斷

所調用的 API 可在之前串口實驗文章中找到。

/* 初始化異常向量 */
system_initexception();

/* 配置 ISR 函數 */
intc_setvectaddr(NUM_UART0, handler);

/* 使能 NUM_UART0 中斷 */
intc_enable(NUM_UART0);

中斷服務程式

void handler(void)
{
    /* 發送 +1 後的結果 */
    putc(getc()+1);

    /* 清 VICnADDR */
    intc_clearvectaddr();

    /* 清除中斷標誌 */
    UINTP  = 0x0f;
    UINTSP = 0x0f;
}

運行結果

向 S5PV210 發送一個字元,會得到這個字元 +1 後的字元。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 源代碼是這樣:s=b'^SdVkT#S ]`Y\\!^)\x8f\x80ism'key=''for i in s: i=ord(i)-16 key+=chr(i^32)print (key)運行後出現了問題:ord() expected string of length 1, but int fou... ...
  • 本章主要內容: 1)函數重載 2)C++調用C代碼 3)new/delete關鍵字實現動態記憶體分配 4)namespace命名空間 大家都知道,在生活中,動詞和不同的名詞搭配一起,意義都會大有不同,比如”玩”: 玩游戲 玩卡牌 玩足球 所以在C++中,便出現了函數重載(JAVA,c#等語言都有函數重 ...
  • 一、問題 今天筆者在構建maven相關的web項目的時候,出現了一個問題: Java compiler level does not match the version of the installed Java project facet. 二、分析 導致這個問題的原因是因為jdk版本的問題,但是 ...
  • 這篇文章主要給大家介紹下如何用DirectSound打造一個簡易播放器,因為篇幅有限且代碼邏輯較為複雜,我們只介紹下核心技術內容。該播放器主要包括以下功能: 播放、暫停 播放進度提示。 1. DirectSound播放概念簡介 1.1 播放相關概念 首先要介紹下DirectSound的設計理念: ! ...
  • 一、面向對象 1、面向過程 a、優點:極大的降低了寫程式的複雜度,只需要順著執行的步驟,堆疊代碼即可 b、缺點:一套流水線或者流程就是來解決一個問題,代碼就是牽一發而東莞全身 2、面向對象 a、優點:解決程式的擴展性,對某一個對象單獨修改,會立刻反應到整個體系中 b、缺點:可控性差,無法向面向過程的 ...
  • 寫在前面 資料庫類別 首先選擇一個關係資料庫。目前廣泛使用的關係資料庫也就這麼幾種: 付費的商用資料庫: Oracle:典型的高富帥; SQL Server:微軟自家產品,Windows定製專款; DB2:IBM的產品,聽起來挺高端; Sybase:曾經跟微軟是好基友,後來關係破裂,現在家境慘淡。 ...
  • 什麼是JDBC JDBC全稱為:Java Data Base Connectivity,它是可以執行SQL語句的Java API 為什麼我們要用JDBC 市面上有非常多的資料庫,本來我們是需要根據不同的資料庫學習不同的API,sun公司為了簡化這個操作,定義了JDBC API【介面】 sun公司只是 ...
  • .NET Core的支持文檔大體上可以參考文檔.Net客戶端使用指南:https://github.com/ctripcorp/apollo/wiki/.Net%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97登錄Apoll... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...