中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

濮陽網(wǎng)站建設(shè)哪家好推廣軟件排行榜前十名

濮陽網(wǎng)站建設(shè)哪家好,推廣軟件排行榜前十名,黑龍江省城鄉(xiāng)和住房建設(shè)廳網(wǎng)站首頁,大豐網(wǎng)站制作文章目錄 [toc]GPIO中斷簡介FPGA配置常用函數(shù)MCU程序設(shè)計(jì)工程下載 本文是高云FPGA系列教程的第7篇文章。 本篇文章介紹片上ARM Cortex-M3硬核處理器GPIO外部的使用,演示按鍵中斷方式來控制LED亮滅,基于TangNano 4K開發(fā)板。 參考文檔:Gowin_E…

文章目錄

    • @[toc]
      • GPIO中斷簡介
      • FPGA配置
      • 常用函數(shù)
      • MCU程序設(shè)計(jì)
      • 工程下載

本文是高云FPGA系列教程的第7篇文章。

本篇文章介紹片上ARM Cortex-M3硬核處理器GPIO外部的使用,演示按鍵中斷方式來控制LED亮滅,基于TangNano 4K開發(fā)板。

參考文檔:Gowin_EMPU(GW1NS-4C)軟件編程 參考手冊(cè)

GPIO中斷簡介

高云GN1NSR-4C共有16個(gè)GPIO,每個(gè)GPIO可配置成輸入或輸出模式,支持中斷輸入,觸發(fā)方式可選擇:上升沿、下降沿、高電平、低電平觸發(fā)。

typedef enum
{GPIO_Int_Disable = 0,    /* Disable : Interrupt enable=0 */GPIO_Int_Low_Level,      /* Low-level : Interrupt enable=1 */GPIO_Int_High_Level,     /* High-level : Interrupt enable=1 & polarity=1 */GPIO_Int_Falling_Edge,   /* Falling edge : Interrupt enable=1 & type=1 */GPIO_Int_Rising_Edge     /* Rising edge : Interrupt enable=1 & polarity=1 & type=1 */
}GPIOInt_TypeDef;

中斷優(yōu)先級(jí)可通過NVIC進(jìn)行設(shè)置,支持 0-7 級(jí)可編程中斷優(yōu)先級(jí)。

FPGA配置

FPGA工程中,EMPU需要使能GPIO外設(shè)。

頂層設(shè)計(jì)如下:

/**************************************************************** Copyright(C), 2010-2022, WeChat:MCU149.* ModuleName : top_hdl.v * Date       : 2023年9月19日* Time       : 20:19:39* Author     : WeChat:MCU149* Function   : gw1nsr-4c gpio interrupt demo* Version    : v1.0*      Version | Modify*      ----------------------------------*       v1.0    .....***************************************************************/module top_hdl(//Inputsinput gclk,      // 27MHzinput gresetn,    input key,input uart_rxd,//Outputsoutput uart_txd,output led
);wire clk_60m;wire arm_clk = clk_60m;
wire arm_resetn = gresetn;wire arm_uart0_rxd = uart_rxd;
wire arm_uart0_txd;
wire [15:0] arm_gpio_in;
wire [15:0] arm_gpio_out;
wire [15:0] arm_gpio_outen;assign uart_txd = arm_uart0_txd;
assign led = arm_gpio_out[1];
assign arm_gpio_in[0] = key;Gowin_PLLVR pll_ut0(.clkout(clk_60m), //output clkout.clkin(gclk) //input clkin
);Gowin_EMPU_Top arm_cortex_m3_core(//Inputs.sys_clk(arm_clk),.reset_n(arm_resetn),.uart0_rxd(arm_uart0_rxd), .gpioin(arm_gpio_in[15:0]),//Outputs.uart0_txd(arm_uart0_txd),.gpioout(arm_gpio_out[15:0]),.gpioouten(arm_gpio_outen[15:0])
);endmodule   //top_hdl end

LED連接到GPIO1,按鍵連接到GPIO0,按鍵按下是低電平。

常用函數(shù)

常用的GPIO驅(qū)動(dòng)庫函數(shù)如下:

//清除中斷
void GPIO_IntClear(GPIO_TypeDef* GPIOx,uint32_t GPIO_Pin)
//獲取中斷觸發(fā)狀態(tài)
uint32_t GPIO_GetIntStatus(GPIO_TypeDef* GPIOx)
//中斷使能
uint32_t GPIO_SetIntEnable(GPIO_TypeDef* GPIOx,uint32_t GPIO_Pin)
//設(shè)置高電平觸發(fā)方式
void GPIO_SetIntHighLevel(GPIO_TypeDef* GPIOx,uint32_t GPIO_Pin)
//設(shè)置上升沿觸發(fā)方式
void GPIO_SetIntRisingEdge(GPIO_TypeDef* GPIOx,uint32_t GPIO_Pin)
//設(shè)置低電平觸發(fā)方式
void GPIO_SetIntLowLevel(GPIO_TypeDef* GPIOx,uint32_t GPIO_Pin)
//設(shè)置下降沿觸發(fā)方式
void GPIO_SetIntFallingEdge(GPIO_TypeDef* GPIOx,uint32_t GPIO_Pin)

一般配置流程:

1. 配置GPIO輸入輸入模式,中斷觸發(fā)方式
2. 配置NVIC中斷優(yōu)先級(jí)
3. 使能NVIC和GPIO中斷
4. 實(shí)現(xiàn)中斷服務(wù)函數(shù),并注釋掉系統(tǒng)提供的中斷服務(wù)函數(shù)

MCU程序設(shè)計(jì)

中斷觸發(fā)方式,可以在GPIO管腳初始化時(shí)進(jìn)行設(shè)置,也可以通過單獨(dú)的設(shè)定函數(shù)來設(shè)定。
首先是按鍵和LED對(duì)應(yīng)的GPIO初始化,按鍵默認(rèn)為高電平,按下是低電平,如果要按鍵按下觸發(fā)中斷,即從高電平到低電平,就設(shè)置成下降沿觸發(fā),如果想要按鍵松開觸發(fā)中斷,就設(shè)置為上升沿觸發(fā):

int gpio_init(void)
{GPIO_InitTypeDef init;NVIC_InitTypeDef InitTypeDef_NVIC;//KEY
//    init.GPIO_Int = GPIO_Int_Falling_Edge;     //press triginit.GPIO_Int = GPIO_Int_Rising_Edge; //release triginit.GPIO_Mode = GPIO_Mode_IN;init.GPIO_Pin = GPIO_Pin_0;GPIO_Init(GPIO0, &init);//LEDinit.GPIO_Int = GPIO_Int_Disable;init.GPIO_Mode = GPIO_Mode_OUT;init.GPIO_Pin = GPIO_Pin_1;GPIO_Init(GPIO0, &init);//    GPIO_SetIntRisingEdge(GPIO0, GPIO_Pin_0);   //release trig
//    GPIO_SetIntFallingEdge(GPIO0, GPIO_Pin_0);     //press trigGPIO_SetIntEnable(GPIO0, GPIO_Pin_0);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);InitTypeDef_NVIC.NVIC_IRQChannel = PORT0_0_IRQn;InitTypeDef_NVIC.NVIC_IRQChannelPreemptionPriority = 1;InitTypeDef_NVIC.NVIC_IRQChannelSubPriority = 1;InitTypeDef_NVIC.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&InitTypeDef_NVIC);return 0;
}

需要注意的是,中斷觸發(fā)方式只能設(shè)置成一種,不支持設(shè)置成上升沿和下降沿都觸發(fā)中斷。

中斷服務(wù)函數(shù)的實(shí)現(xiàn):

void PORT0_0_Handler(void)
{static uint16_t data = 0;data = ~data;gpio_write(data);printf("GPIO0_0 Interrupt Trig\r\n");GPIO_IntClear(GPIO0, GPIO_Pin_0);
}

需要把gw1ns4c_it.c文件里的中斷服務(wù)函數(shù)注釋掉。

編譯,加載bin文件運(yùn)行:

按下按鍵,在串口會(huì)輸出日志,LED同時(shí)狀態(tài)翻轉(zhuǎn)。

工程下載

本文基于TangNano 4K的開發(fā)板,配套工程在以下鏈接,包括Keil和GMD開發(fā)環(huán)境,都可以正常使用。

  • gw1nsr_4c_gpio_int_demo.rar

本文是高云FPGA系列教程的第7篇文章。

http://www.risenshineclean.com/news/11172.html

相關(guān)文章:

  • 手機(jī)平臺(tái)軟件開發(fā)關(guān)鍵詞推廣優(yōu)化排名如何
  • 石家莊做外貿(mào)的網(wǎng)站建設(shè)百度上首頁
  • mac網(wǎng)站開發(fā)環(huán)境seo和競(jìng)價(jià)排名的區(qū)別
  • 可以做lebenslauf的網(wǎng)站線上宣傳有哪些好的方式方法
  • 建網(wǎng)站賣虛擬資源需要怎么做開魯網(wǎng)站seo不用下載
  • 工程建設(shè)標(biāo)準(zhǔn)網(wǎng)官方網(wǎng)站網(wǎng)站seo具體怎么做
  • 網(wǎng)站建設(shè)布局洛陽市網(wǎng)站建設(shè)
  • java做網(wǎng)站pdf制作一個(gè)網(wǎng)站大概需要多少錢
  • 網(wǎng)站備案都需要什么百度助手應(yīng)用商店下載安裝
  • wordpress 仿站命令網(wǎng)推拉新app推廣接單平臺(tái)
  • 設(shè)計(jì)類比賽網(wǎng)站怎樣在平臺(tái)上發(fā)布信息推廣
  • 你自己做的網(wǎng)站怎么發(fā)布到網(wǎng)上2345網(wǎng)止導(dǎo)航
  • 江蘇公司響應(yīng)式網(wǎng)站建設(shè)報(bào)價(jià)網(wǎng)絡(luò)搜索優(yōu)化
  • 模具 東莞網(wǎng)站建設(shè)域名權(quán)重
  • wordpress 自己寫jsseo教程視頻論壇
  • 企業(yè)網(wǎng)站建設(shè)合同免費(fèi)seo提交工具
  • 什么公司做網(wǎng)站小紅書推廣費(fèi)用一般多少
  • 做網(wǎng)站的目的與意義石家莊疫情
  • 中國建設(shè)銀行官方網(wǎng)站站長之家端口掃描
  • 做網(wǎng)站的費(fèi)用的會(huì)計(jì)分錄自媒體seo是什么意思
  • 怎樣申請(qǐng)做p2p融資網(wǎng)站中國培訓(xùn)網(wǎng)
  • 五金商城網(wǎng)站建設(shè)注意百度網(wǎng)址怎么輸入?
  • 1g網(wǎng)站空間多少錢百度一下網(wǎng)頁搜索
  • 網(wǎng)站301是什么意思人民網(wǎng)疫情最新消息
  • wordpress資源博客優(yōu)化師助理
  • 網(wǎng)站做seo第一步公司注冊(cè)流程
  • wordpress主題woocomece網(wǎng)站關(guān)鍵詞優(yōu)化建議
  • wordpress 接收詢盤長治seo顧問
  • 鎮(zhèn)江市住房城鄉(xiāng)建設(shè)局網(wǎng)站谷歌seo推廣
  • 專業(yè)做寫生的網(wǎng)站百度云官網(wǎng)登錄入口