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

4.16 day7 ARM

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

mykey.h

#ifndef __MYKEY_H__
#define __MYKEY_H__

#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_gic.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"

void key1_init();
void key2_init();
void key3_init();

#endif

mykey.c

#include "mykey.h"

void key1_init()
{
    RCC->MP_AHB4ENSETR |= (0X3 << 4);
    GPIOE->MODER &= (~(0X3<<20));
     GPIOE->MODER  |= (0x1<<20);
     //設(shè)置PF10為輸出
     GPIOF->MODER&= (~(0X3<<20));
     GPIOF->MODER  |= (0x1<<20);
     //設(shè)置PE8為輸出
     GPIOE->MODER &= (~(0X3<<16));
     GPIOE->MODER  |= (0x1<<16);
 
     //設(shè)置PE10為推挽輸出
     GPIOE->OTYPER &= (~(0X1<<10));
     //設(shè)置PF10為推挽輸出
     GPIOF->OTYPER &= (~(0X1<<10));
     //設(shè)置PE8為推挽輸出
     GPIOE->OTYPER &= (~(0X1<<8));
 
     //設(shè)置PE10為低速輸出
     GPIOE->OSPEEDR &= (~(0X3<<20));
     //設(shè)置PF10為低速輸出
     GPIOF->OSPEEDR &= (~(0X3<<20));
     //設(shè)置PE8為低速輸出
     GPIOE->OSPEEDR &= (~(0X3<<16));
 
     //設(shè)置PE10輸出無上拉下拉電阻
    GPIOE->PUPDR &= (~(0X3<<20));
     //設(shè)置PF10輸出無上拉下拉電阻
    GPIOF->PUPDR &= (~(0X3<<20));
     //設(shè)置PE8輸出無上拉下拉電阻
    GPIOE->PUPDR &= (~(0X3<<16));
 
     //三盞燈默認是關(guān)閉
    GPIOE->ODR &= (~(0X1<<10));
    GPIOF->ODR &= (~(0X1<<10));
    GPIOE->ODR &= (~(0X1<<8));

    RCC->MP_AHB4ENSETR |= (0X5 << 5);
    GPIOF->MODER &= (~(0X3 << 14));
    EXTI->EXTICR2 &= (~(0XFF << 24));
    EXTI->EXTICR2 |= (0X5 << 24);
    EXTI->FTSR1 |= (0X1 << 7);
    EXTI->C1IMR1 |= (0X1 << 7);
    GICD->CTRL |= 0X1;
    GICD->ISENABLER[3] |= (0X1 << 1);
    GICD->IPRIORITYR[24] &= (~(0X1F << 11));
    GICD->ITARGETSR[24] &= (~(0X03 << 8));
    GICD->ITARGETSR[24] |= (0X1 << 8);
    GICC->CTRL |= 0X1;
    GICC->PMR |= 0X1F;
}

void key2_init()
{
    RCC->MP_AHB4ENSETR |= (0X3 << 4);
    GPIOF->MODER &= (~(0X3 << 12));
    GPIOF->MODER |= (0X1 << 12);
    GPIOF->OTYPER &= (~(0X1<<6));
    GPIOF->OSPEEDR &= (~(0X3<<12));
    GPIOF->PUPDR &= (~(0X3<<12));
    GPIOF->ODR &= (~(0X1<<6));

    RCC->MP_AHB4ENSETR |= (0X5 << 5);
    GPIOF->MODER &= (~(0X3 << 16));
    EXTI->EXTICR3 &= (~(0XFF));
    EXTI->EXTICR3 |= 0X5;
    EXTI->FTSR1 |= (0X1 << 8);
    EXTI->C1IMR1 |= (0X1 << 8);
    GICD->CTRL |= 0X1;
    GICD->ISENABLER[3] |= (0X1 << 2);
    GICD->IPRIORITYR[24] &= (~(0X1F << 19));
    GICD->ITARGETSR[24] &= (~(0X03 << 16));
    GICD->ITARGETSR[24] |= (0X1 << 16);
    GICC->CTRL |= 0X1;
    GICC->PMR |= 0X1F;
}

void key3_init()
{
    RCC->MP_AHB4ENSETR |= (0X3 << 4);
    GPIOE->MODER &= (~(0X3 << 18));
    GPIOE->MODER |= (0X1 << 18);
    GPIOE->OTYPER &= (~(0X1<<9));
    GPIOE->OSPEEDR &= (~(0X3<<18));
    GPIOE->PUPDR &= (~(0X3<<18));
    GPIOE->ODR &= (~(0X1<<9));

    RCC->MP_AHB4ENSETR |= (0X5 << 5);
    GPIOF->MODER &= (~(0X3 << 18));
    EXTI->EXTICR3 &= (~(0XFF << 8));
    EXTI->EXTICR3 |= (0X5 << 8);
    EXTI->FTSR1 |= (0X1 << 9);
    EXTI->C1IMR1 |= (0X1 << 9);
    GICD->CTRL |= 0X1;
    GICD->ISENABLER[3] |= (0X1 << 3);
    GICD->IPRIORITYR[24] &= (~(0X1F << 27));
    GICD->ITARGETSR[24] &= (~(0X03 << 24));
    GICD->ITARGETSR[24] |= (0X1 << 24);
    GICC->CTRL |= 0X1;
    GICC->PMR |= 0X1F;
}

do_irq.c

#include "mykey.h"
extern void printf(const char *fmt, ...);
unsigned int i = 0;
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;
void do_irq(void) 
{
    
    unsigned int a = (GICC->IAR & 0X3FF);
    switch (a)
    {
    case 97:
        printf("key2\n");
        flag2 = !flag2;
        if(flag2 == 1)
        {
            GPIOF->ODR |= (0X1<<6);

        }
        if (flag2 == 0)
        {
            GPIOF->ODR &= (~(0X1<<6));
            
        }
        
        EXTI->FPR1 |= (0X1 << 7);
        GICD->ICPENDR[3] |= (0X1 << 1);
        break;
    case 98:
        printf("key3\n");
        flag1 = !flag1;
        if(flag1 == 1)
        {
            GPIOE->ODR |= (0X1<<10);
            GPIOF->ODR |= (0X1<<10);
            GPIOE->ODR |= (0X1<<8);
        }
        if (flag1 == 0)
        {
            GPIOE->ODR &= (~(0X1<<10));
            GPIOF->ODR &= (~(0X1<<10));
            GPIOE->ODR &= (~(0X1<<8));
        }
        EXTI->FPR1 |= (0X1 << 8);
        GICD->ICPENDR[3] |= (0X1 << 2);
        break;
    case 99:
        printf("key1\n");
        flag3 = !flag3;
        if(flag3 == 1)
        {
            GPIOE->ODR |= (0X1<<9);
            
        }
        if (flag3 == 0)
        {
            GPIOE->ODR &= (~(0X1<<9));
            
        }
        EXTI->FPR1 |= (0X1 << 9);
        GICD->ICPENDR[3] |= (0X1 << 3);
        break;
    default:
        break;
    }
    GICC->EOIR = a;
}

main.c文章來源地址http://www.zghlxwxcb.cn/news/detail-860678.html

#include "mykey.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms)
{
    int i,j;
    for(i=0;i<ms;i++)
    {
        for(j=0;j<2000;j++)
        {
 
        }
    }
}
int main()
{
    key1_init();
    key2_init();
    key3_init();
    while (1)
    {
        printf("hello world\n");
        delay_ms(1000);
    }
    
}

到了這里,關(guān)于4.16 day7 ARM的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • ARM--day7(cortex_M4核LED實驗流程、異常源、異常處理模式、異常向量表、異常處理流程、軟中斷編程、cortex_A7核中斷實驗)
  • 【ARM Coresight Debug 系列 16 -- Linux 斷點 BRK 中斷使用詳細介紹】

    【ARM Coresight Debug 系列 16 -- Linux 斷點 BRK 中斷使用詳細介紹】

    請閱讀 【ARM Coresight SoC-400/SoC-600 專欄導讀】 ARMv8 架構(gòu)的 BRK 指令是用于生成一個軟件斷點的。當處理器執(zhí)行到 BRK 指令時,會觸發(fā)一個斷點異常。 BRK 指令的格式如下: 其中 imm 是一個 16 位的立即數(shù),它可以在斷點異常發(fā)生時將立即數(shù)保存到 ESR.ISS 域中,從可以用來區(qū)分不同

    2024年02月03日
    瀏覽(69)
  • 【Linux下6818開發(fā)板(ARM)】硬件空間掛載

    【Linux下6818開發(fā)板(ARM)】硬件空間掛載

    (??? ),hello我是 祐言 博客主頁:C語言基礎(chǔ),Linux基礎(chǔ),軟件配置領(lǐng)域博主?? 快上??,一起學習! 送給讀者的一句雞湯??: 集中起來的意志可以擊穿頑石! 作者水平很有限,如果發(fā)現(xiàn)錯誤,可在評論區(qū)指正,感謝?? ????????在嵌入式系統(tǒng)開發(fā)中,經(jīng)常需要使用外部硬件

    2024年02月14日
    瀏覽(18)
  • 【ARM64 常見匯編指令學習 16 -- ARM64 SMC 指令】

    上篇文章:ARM64 常見匯編指令學習 15 – ARM64 標志位的學習 下篇文章:ARM64 常見匯編指令學習 17 – ARM64 BFI 指令 在ARMv8架構(gòu)中,同步異常主要包括以下幾種: Undefined Instruction :未定義指令異常,當處理器嘗試執(zhí)行一條未定義的指令時會觸發(fā)。 Supervisor Call (SVC) :這是一種特殊

    2024年02月13日
    瀏覽(52)
  • [ARM+Linux] 基于全志h616外設(shè)開發(fā)筆記

    [ARM+Linux] 基于全志h616外設(shè)開發(fā)筆記

    修改用戶密碼 配置網(wǎng)絡(luò) nmcli dev wifi? 命令掃描周圍WIFI熱點 ? nmcli dev wifi connect ?xxx? password xxx 命令 連接WiFi 查看ip地址的指令: ifconfig ip addr show wlan0 SSH登錄 ????????這是企業(yè)開發(fā)調(diào)試必用方式,比串口來說不用接線,前提是接入網(wǎng)絡(luò)并獲得板子IP 地址,且系統(tǒng)做了SSH的

    2023年04月21日
    瀏覽(19)
  • Rust在linux下交叉編譯到arm開發(fā)板

    Rust在linux下交叉編譯到arm開發(fā)板

    前段時間做了rust交叉編譯到arm開發(fā)板,如果引入的包有些包含OpenSSL,ring...遇見了很多問題在網(wǎng)上也查閱很多資料,今天抽個時間做個匯總吧。 虛擬機里面安裝rust環(huán)境,做到交叉編譯的時候應該都已經(jīng)有了,這個地方就不過多說了,網(wǎng)上找一下就有的 首先描述一下我的環(huán)境

    2024年02月15日
    瀏覽(23)
  • ARM-Linux開發(fā)與MCU開發(fā)的不同之處分析

    ARM-Linux開發(fā)與MCU開發(fā)的不同之處分析

    目錄 一、ARM-Linux應用開發(fā)和單片機開發(fā)的不同 二、Arm-Linux基本開發(fā)環(huán)境 針對ARM-Linux程序的開發(fā),主要分為三類:應用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā)。針對不同種類的軟件開發(fā),有其不同的特點。 今天,我們來看看ARM-Linux開發(fā)和MCU開發(fā)的不同點,以及ARM-Linux的基本

    2024年02月10日
    瀏覽(17)
  • ARM_Linux的交叉開發(fā)以及交叉編譯器

    ARM_Linux的交叉開發(fā)以及交叉編譯器

    目錄 為什么要使用交叉開發(fā) 為什么要使用交叉編譯 交叉編譯器的安裝 交叉編譯器的使用 交叉開發(fā)是指在通用的電腦上吧程序編寫,編譯,調(diào)試好,再下載到嵌入式產(chǎn)品中去運行,對于一些簡單的程序的話,直接在電腦上編譯調(diào)試好即可,但是對于一些需要操作硬件的開發(fā)

    2024年01月23日
    瀏覽(26)
  • Qt5.12.6配置Android Arm開發(fā)環(huán)境(Linux)

    Qt5.12.6配置Android Arm開發(fā)環(huán)境(Linux)

    1.安裝jdk 2.安裝android studio 3.安裝sdk 與ndk? 設(shè)置代理 ?安裝SDK工具 ?安裝SDK Platform 安裝QT? ?選擇JDK 1.8安裝路徑,SDK與NDK路徑 ?如出現(xiàn)Platform SDK或者Platform Build Tools未安裝,點擊Update Installed ?配置成功后可看到ARMv7與AMD-v8a kits Qt Version也可看到ARMv7與AMD-v8a? ?如果 有安裝了CMake,也

    2024年01月21日
    瀏覽(35)
  • Live555 C++ arm linux64 RTSP推流開發(fā)

    Live555 C++ arm linux64 RTSP推流開發(fā)

    由于不能apt-get install,所以先官網(wǎng)下載源碼。http://www.live555.com/liveMedia/ 解壓 tar -zxvf live.2023.07.24.tar.gz 安裝可以看這篇博文前部 live555server環(huán)境搭建 OpenSSL必須安裝 安裝時如果直接在arm板子上裝,生成makefile時就直接寫 不能寫成armlinux 如果選成了armlinux,這樣make的時候用的就是

    2024年02月03日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包