日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZYNQ7000-GPIO EMIO中断实验 程序烧写后自动进一次中断的怪现象

發布時間:2025/3/13 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZYNQ7000-GPIO EMIO中断实验 程序烧写后自动进一次中断的怪现象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

試驗硬件:正點原子領航者ZYNQ開發板(芯片xc7z020clg400-2)

試驗軟件:Vivado 2020.2與Vitis 2020.2

Vivado中的Block Design:

打開UART0,打開MIO與EMIO,EMIO位寬為1,正確設置DDR型號,設置FCLK為50MHz,VIO輸出與EMIO輸入對接,此時無需指定EMIO引腳,VIO輸出默認為0。

Vitis中的代碼:

#include "xil_printf.h" #include "xgpiops.h" #include "sleep.h" #include "xparameters.h" #include "xscugic.h"#define EMIO0 54UXGpioPs psGpio;XScuGic scuGic;void psGpio_Handler(void *CallBackRef);int main(void) {xil_printf("begin!\r\n");// 初始化psGpioXGpioPs_Config *psGpio_configPtr;psGpio_configPtr = XGpioPs_LookupConfig(XPAR_XGPIOPS_0_DEVICE_ID);XGpioPs_CfgInitialize(&psGpio, psGpio_configPtr, psGpio_configPtr->BaseAddr);// 打開系統的中斷處理功能Xil_ExceptionInit(); // 初始化異常句柄,只在很早版本的bsp中需要,此處為了兼容性保留Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT, (Xil_ExceptionHandler)XScuGic_InterruptHandler,&scuGic); // 為IRQ注冊中斷處理程序Xil_ExceptionEnable(); // 使能系統中斷功能// 初始化中斷控制器XScuGic_Config *scuGic_config;scuGic_config = XScuGic_LookupConfig(XPAR_XSCUTIMER_0_DEVICE_ID); // 根據器件ID查找配置XScuGic_CfgInitialize(&scuGic, scuGic_config, scuGic_config->CpuBaseAddress);// 關聯中斷處理函數XScuGic_Connect(&scuGic, XPAR_XGPIOPS_0_INTR, (Xil_ExceptionHandler)psGpio_Handler, (void *)&psGpio);// 啟用對應中斷ID的中斷源XScuGic_Enable(&scuGic, XPAR_XGPIOPS_0_INTR);// 注意psGPIO中斷不需要設置中斷優先級// 設置psGPIO中斷類型XGpioPs_SetIntrTypePin(&psGpio, EMIO0, XGPIOPS_IRQ_TYPE_EDGE_RISING);// 使能psGPIO中斷XGpioPs_IntrEnablePin(&psGpio, EMIO0);while(1){}return 0; }void psGpio_Handler(void *CallBackRef) {XGpioPs *psGpioPtr = (XGpioPs *)CallBackRef;if (XGpioPs_IntrGetStatusPin(psGpioPtr, EMIO0) == TRUE){xil_printf("This is EMIO0 Interrupt!\r\n");XGpioPs_IntrClearPin(psGpioPtr, EMIO0);} }

試驗現象:

)

此時ZYNQ的啟動方式為QSPI,也就是從FLASH啟動。

可以看到第一次燒寫打印了"This is EMIO Interrupt",這表示燒寫后自動進了一次中斷,而第二次燒寫則未打印,表明燒寫未進入此中斷。不進中斷才是對的。

當設置啟動方式為JTAG,從JTAG啟動后,看一下這種情況會不會消失。

從上圖可見,設置為JTAG啟動后,燒寫后不會自動觸發一次EMIO中斷了。

還有一種更通用的辦法是在GPIO PIN中斷使能之前,先清除一次中斷狀態,也可以防止燒寫自動進一次EMIO中斷,即加入一行代碼:

XGpioPs_IntrClearPin(&psGpio, EMIO0);

如下:

// 設置psGPIO中斷類型XGpioPs_SetIntrTypePin(&psGpio, EMIO0, XGPIOPS_IRQ_TYPE_EDGE_RISING);// 使能之前先清除中斷狀態!XGpioPs_IntrClearPin(&psGpio, EMIO0);// 使能psGPIO中斷XGpioPs_IntrEnablePin(&psGpio, EMIO0);

推測造成這種現象的原因是燒寫前EMIO被FLASH中的程序控制著,可能中斷狀態就是1,而燒寫也沒有清除中斷狀態寄存器,所以燒寫后自動進了一次中斷,所以QSPI模式出現此問題,而JTAG模式不出現。

總結

以上是生活随笔為你收集整理的ZYNQ7000-GPIO EMIO中断实验 程序烧写后自动进一次中断的怪现象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 影音先锋色小姐 | 看了下面会湿的视频 | 欧美精品xx| 久久精品黄aa片一区二区三区 | 午夜免费看片 | 欧美亚洲在线 | 丰满人妻中伦妇伦精品app | 亚洲精品码 | 日韩一区在线视频 | 国产乱色 | 欧美三级韩国三级日本三斤 | 69日影院| 成年人免费在线观看 | 毛片a区| 日本二三区| wwwav视频在线观看 | 干干操操 | 亚洲免费色视频 | 制服av在线 | 精品一区二区三区不卡 | 免费人妻一区二区三区 | 午夜视频在线免费 | 偷偷色噜狠狠狠狠的777米奇 | 又爽又黄又无遮挡 | 春色校园激情 | 成人黄色视屏 | 性chinese天美传媒麻 | 在线观看视频一区二区三区 | 综合久久中文字幕 | 一个人看的www视频在线观看 | 四季av一区二区凹凸精品 | 欧美系列一区二区 | 欧美国产日本 | 激情九月天 | 欧美一区二区三区影视 | 五月激情婷婷网 | 亚洲高清视频一区二区 | 99热超碰| 中文在线第一页 | 久久成人a| 91极品美女| 7777精品久久久久久 | 18xxxx日本 | 中文字幕人妻色偷偷久久 | 亚洲精品国产精 | 最近中文字幕免费mv视频7 | 亚洲日本中文字幕 | 中文在线国产 | 日韩精品第1页 | 国产精品一级视频 | 欧美日韩另类在线 | 国模叶桐尿喷337p人体 | 国产精品成人久久电影 | 国产亚洲精品女人久久久久久 | 国产亚洲精品一区二区三区 | 日韩免费影院 | juliaann第一次和老师 | 亲女禁h啪啪宫交 | 午夜精品剧场 | 亚洲天堂va| 成年人视频在线免费观看 | 黄黄视频在线观看 | 国产精品人人做人人爽 | 丁香花高清在线观看完整动漫 | 成人深夜影院 | 6699av| 色视频网站| 亚洲综合黄色 | 涩涩网站在线观看 | 欧美日韩国产一区二区三区在线观看 | 91香蕉视频在线看 | 免费手机av| 久久久国产精品x99av | 国产每日更新 | 一集毛片 | 成人午夜免费在线 | 亚洲区成人 | 亚洲狼人在线 | 欧美亚洲黄色 | 欧美性生活一区 | 五月丁香综合激情六月久久 | 91久久人澡人人添人人爽欧美 | 国产51视频 | 欧美成人福利视频 | 国产制服av | 国产资源av | 欧美在线资源 | 国产激情a| 经典杯子蛋糕日剧在线观看免费 | 久青草影院 | 玖玖在线视频 | 亚洲二区在线播放视频 | 国产在线18| 在线观看视频免费 | 亚洲精品久久久久avwww潮水 | 星铁乱淫h侵犯h文 | a天堂最新地址 | 日本午夜啪啪 | 麻豆视频网站入口 |