chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之DMAC中斷回調(diào)函數(shù)等

瑞薩嵌入式小百科 ? 來源:野火電子 ? 2025-12-26 09:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

19.7.1.11

DMAC中斷回調(diào)函數(shù)

DMAC中斷回調(diào)函數(shù)如下所示:

列表10: 代碼清單20?9DMAC中斷回調(diào)函數(shù)

左右滑動查看完整內(nèi)容

// DMA 傳輸完成標(biāo)志位
volatilebool dmac0_complete_transmission_sign =false;
// 傳輸次數(shù)計數(shù)(中斷次數(shù))
volatileuint16_t dmac0_transfer_count;
/* DMAC 中斷回調(diào)函數(shù) */
voiddmac0_callback(dmac_callback_args_t *p_args)
{
(void)(p_args);
dmac0_complete_transmission_sign =true;
dmac0_transfer_count ++;
}

dmac0_transfer_count用于記錄DMAC產(chǎn)生中斷的次數(shù)。

19.7.1.12

hal_entry 入口函數(shù)

在hal_entry函數(shù)中,程序遵循以下步驟來執(zhí)行:

調(diào)用DMAC_Init函數(shù)初始化DMAC。

調(diào)用R_DMAC_Enable函數(shù)使能DMAC使之可以響應(yīng)傳輸請求。

調(diào)用R_DMAC_SoftwareStart函數(shù)來發(fā)起軟件觸發(fā)請求信號來啟動DMAC傳輸。

通過一定的延時等待所有傳輸完成,因?yàn)樵诋a(chǎn)生多次的中斷的情況下,僅通過中斷標(biāo)志位判斷可能出錯。

在傳輸完成之后,比較傳輸目標(biāo)地址的數(shù)據(jù)(DST_Buffer)和期待的正確數(shù)據(jù)(Expected_DST_Buffer)是否一致。

傳入R_DMAC_SoftwareStart函數(shù)的參數(shù) TRANSFER_START_MODE_SINGLE和TRANS-FER_START_MODE_REPEAT的區(qū)別如下:

傳入?yún)?shù)為TRANSFER_START_MODE_SINGLE時,正常模式和重復(fù)模式下每發(fā)起一次軟件請求只會傳輸一個數(shù)據(jù)單元大?。╰ransfer_size_tsize)的數(shù)據(jù)。塊模式下則是只會傳輸一個塊大小(transfer_info_t::length)的數(shù)據(jù)。

傳入?yún)?shù)為TRANSFER_START_MODE_REPEAT時,會自動重復(fù)地觸發(fā)傳輸,期間可能會產(chǎn)生多次中斷,直至所有數(shù)據(jù)都傳輸完成為止。

hal_entry入口函數(shù)如下所示。

列表11:代碼清單20?10hal_entry入口函數(shù)

左右滑動查看完整內(nèi)容

/*用戶頭文件包含*/
#include"led/bsp_led.h"
#include"debug_uart/bsp_debug_uart.h"
#include"dmac/bsp_dmac_m2m.h"
externconstuint32_tSRC_Buffer[BUFFER_SIZE];
externuint32_tDST_Buffer[BUFFER_SIZE];
externuint32_tExpected_DST_Buffer[BUFFER_SIZE];
externvolatilebooldmac0_complete_transmission_sign;
externvolatileuint16_tdmac0_transfer_count;
uint8_tBufferCompare(constuint32_t*pBuffer1,constuint32_t*pBuffer2,?
→uint16_tBufferLength);
voidBufferShow_HexData(constuint32_t*pBuffer,uint16_tBufferLength);
voidhal_entry(void)
{
/*TODO:addyourowncodehere*/
fsp_err_terr= FSP_SUCCESS;
uint8_tres;
LED_Init();
// LED 初始化
Debug_UART4_Init();// SCI4 UART 調(diào)試串口初始化
/* 初始化 DMAC */
DMAC_Init();
dmac0_complete_transmission_sign =false;//傳輸完成標(biāo)志位清零
printf("這是一個 DMAC 存儲器到存儲器的傳輸實(shí)驗(yàn)例程
");
printf("打開串口助手,查看接收窗口打印的相關(guān)提示信息
");
printf("觀察板載 LED 燈,本實(shí)驗(yàn)使用兩個 LED 燈來指示 DMAC 傳輸結(jié)果
");
printf("- DMA 數(shù)據(jù)傳輸失敗,則 LED1 亮(紅色)
");
printf("- DMA 數(shù)據(jù)傳輸成功,則 LED2 亮(藍(lán)色)
");
printf("--------------------------------------------
");
/* 使能 DMAC 使之可以響應(yīng)傳輸請求 */
R_DMAC_Enable(&g_transfer_dmac0_ctrl);
/************************************/
/* 使用軟件觸發(fā)的方式啟動 DMAC 傳輸 */
/************************************/
#ifndefUSE_MY_TRANSFER_INFOR_CONFIG
/* 根據(jù) FSP 配置界面的傳輸信息配置進(jìn)行傳輸 */
//可以用下面這種方式:
R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_START_MODE_
→REPEAT);
//也可以用這種方式:
//for (uint16_t i = 0; i < 1; i++)
//{
//
err =?R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_
→START_MODE_SINGLE);
//
assert(FSP_SUCCESS == err);
//}
#else// 下面的這些是使用自定義的傳輸配置信息配置
#if?(DMAC_TRANSFER_MODE == DMAC_TRANSFER_NORMAL_MODE)
(相當(dāng)于重復(fù)次數(shù)為?1?的重復(fù)模式)
//可以用下面這種方式:
R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_START_MODE_
→REPEAT);
//也可以用這種方式:
//for (uint16_t i = 0; i < BUFFER_SIZE; i++)
//{
//
//正常模式
err =?R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_
→START_MODE_SINGLE);
//
assert(FSP_SUCCESS == err);
//}
#elif?(DMAC_TRANSFER_MODE == DMAC_TRANSFER_REPEAT_MODE)
//可以用下面這種方式:
R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_START_MODE_
→REPEAT);
//也可以用這種方式:
//for (uint16_t i = 0; i < BUFFER_SIZE; i++)
//{
//
//重復(fù)模式
err =?R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_
→START_MODE_SINGLE);
//
assert(FSP_SUCCESS == err);
//}
#elif?(DMAC_TRANSFER_MODE == DMAC_TRANSFER_BLOCK_MODE)
//可以用下面這種方式:
R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_START_MODE_
→REPEAT);
//塊模式
//也可以用這種方式:
//for (uint16_t i = 0; i < 4; i++)
//{
//
err =?R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_
→START_MODE_SINGLE);
//
assert(FSP_SUCCESS == err);
//
//
出錯
//
//}
//加個小延時,確保 DMAC 通道 0 傳輸完成之后才再次軟件觸發(fā)啟動,否則傳輸可能
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS);
#elif?(DMAC_TRANSFER_MODE == DMAC_TRANSFER_REPEAT_BLOCK_MODE)?//重復(fù)-塊模
式
//可以用下面這種方式:
R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_START_MODE_
→REPEAT);
//也可以用這種方式:
//for (uint16_t i = 0; i < 4; i++)
//{
//
err =?R_DMAC_SoftwareStart(&g_transfer_dmac0_ctrl, TRANSFER_
→START_MODE_SINGLE);
//
assert(FSP_SUCCESS == err);
//
//
出錯
//
//}
//加個小延時,確保 DMAC 通道 0 傳輸完成之后才再次軟件觸發(fā)啟動,否則傳輸可能
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS);
#endif//DMAC_TRANSFER_MODE
#endif//USE_MY_TRANSFER_INFOR_CONFIG
/* 判斷傳輸完成中斷(需至少觸發(fā)過 1 次) */
while?(false?== dmac0_complete_transmission_sign);
/* 等待所有傳輸完成(如果是 TRANSFER_IRQ_EACH 模式,傳輸過程中可能會觸發(fā)多次中斷)
*/
R_BSP_SoftwareDelay(5, BSP_DELAY_UNITS_MILLISECONDS);?//加上延時確保所
有傳輸都已完成
printf("
傳輸計數(shù)(中斷次數(shù)):dmac0_transfer_count = %d
", dmac0_
→transfer_count);
/* 將傳輸后的數(shù)據(jù)與我們所期待的結(jié)果相比較 */
res =?BufferCompare(DST_Buffer, Expected_DST_Buffer, BUFFER_SIZE);
printf("傳輸結(jié)果:");
/* 根據(jù)兩者數(shù)據(jù)的比較結(jié)果進(jìn)行判斷 */
if( res !=?0)
{
/* 源數(shù)據(jù)與傳輸后數(shù)據(jù)不相等時,LED1 亮(紅色),表示傳輸失敗 */
LED1_ON;
printf("< 傳輸失敗>
");
}
else
{
/*源數(shù)據(jù)與傳輸后數(shù)據(jù)相等時,LED1亮(藍(lán)色),表示傳輸成功*/
LED2_ON;
printf("<傳輸成功>
");
}
printf("
SRC:");
BufferShow_HexData(SRC_Buffer,BUFFER_SIZE);
printf("
DST:(應(yīng)與Expected_DST一致)");
BufferShow_HexData(DST_Buffer,BUFFER_SIZE);
printf("
Expected_DST:");
BufferShow_HexData(Expected_DST_Buffer,BUFFER_SIZE);
while(1)
{
}
#ifBSP_TZ_SECURE_BUILD
/*Enternon-securecode*/
R_BSP_NonSecureEnter();
#endif
}

19.7.1.13

緩沖區(qū)數(shù)據(jù)比較函數(shù)

下面是DMAC在重復(fù)-塊傳輸模式下傳輸?shù)呐渲么a:

列表12:代碼清單20?11緩沖區(qū)數(shù)據(jù)比較函數(shù)

左右滑動查看完整內(nèi)容

/*緩沖區(qū)數(shù)據(jù)比較函數(shù)
返回0表示兩個緩沖區(qū)數(shù)據(jù)一致
*/
uint8_tBufferCompare(constuint32_t*pBuffer1,constuint32_t*pBuffer2,?
→uint16_tBufferLength)
{
/*數(shù)據(jù)長度遞減*/
while(BufferLength--)
{
/*判斷兩個數(shù)據(jù)源是否對應(yīng)相等*/
if(*pBuffer1!= *pBuffer2)
{
/*對應(yīng)數(shù)據(jù)源不相等馬上退出函數(shù),并返回1*/
return1;
}
/*遞增兩個數(shù)據(jù)源的地址指針*/
pBuffer1++;
pBuffer2++;
}
/*完成判斷并且兩組數(shù)據(jù)完全一致*/
return0;
}

19.7.1.14

打印緩沖區(qū)數(shù)據(jù)函數(shù)

列表13:代碼清單20?12打印緩沖區(qū)數(shù)據(jù)函數(shù)

左右滑動查看完整內(nèi)容

/*打印緩沖區(qū)數(shù)據(jù)函數(shù)
打印緩沖區(qū)數(shù)據(jù):十六進(jìn)制格式
*/
voidBufferShow_HexData(constuint32_t*pBuffer,uint16_tBufferLength)
{
while(BufferLength)
{
if((BufferLength%4)==0)
printf("
	");
printf("0x%08X",*pBuffer);
pBuffer++;
BufferLength--;
}
printf("
");
}

19.7.2

下載驗(yàn)證

首先通過宏USE_MY_TRANSFER_INFOR_CONFIG(在bsp_dmac_m2m.h文件中)來選擇是使用我們自定義的傳輸信息,還是使用在FSP配置界面配置的傳輸信息。

其次通過宏DMAC_TRANSFER_MODE(在bsp_dmac_m2m.h文件中)來選擇不同的傳輸模式。

最后編譯工程并下載到開發(fā)板上,打開串口助手可以查看程序運(yùn)行打印的提示信息。如果DMAC傳輸成功,則藍(lán)色LED2亮起,如果傳輸失敗則紅色LED1亮起。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    917

    瀏覽量

    43722
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    693

    瀏覽量

    35115
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    12178

原文標(biāo)題:DMAC中斷回調(diào)函數(shù)等——瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南(57)

文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    RA系列FSP開發(fā)實(shí)戰(zhàn)指南DMAC+UART串口收發(fā)實(shí)驗(yàn)

    拷貝一份我們之前的e2s工程“19_UART_Receive_Send”,然后將工程文件夾重命名為“20_DMAC_Using_UART”,最后再將它導(dǎo)入到我們的e2studio工作空間中。
    的頭像 發(fā)表于 12-26 09:28 ?3860次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b><b class='flag-5'>指南</b><b class='flag-5'>之</b><b class='flag-5'>DMAC</b>+UART串口收發(fā)實(shí)驗(yàn)

    RA系列FSP開發(fā)實(shí)戰(zhàn)指南I2C讀寫EEPROM實(shí)驗(yàn)

    使用官方提供的FPS進(jìn)行編程,官方提供的FPS具有方便、快捷、簡潔的特性。
    的頭像 發(fā)表于 01-27 10:02 ?3369次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>I2C讀寫EEPROM實(shí)驗(yàn)

    RA6M4系列DMAC和ADC的詳細(xì)介紹(1)

    ADC在產(chǎn)品設(shè)計中是非常常用的MCU外設(shè)模塊,當(dāng)在某些復(fù)雜的應(yīng)用下需要非常快的采樣速度時,使用DMA進(jìn)行數(shù)據(jù)搬運(yùn),可以更便捷的來實(shí)現(xiàn)對數(shù)據(jù)的高效搬運(yùn),結(jié)合本例在FSP上輕松配置您的所需,同時也讓我們了解一下
    的頭像 發(fā)表于 11-29 12:14 ?3537次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b>6M4<b class='flag-5'>系列</b><b class='flag-5'>DMAC</b>和ADC的詳細(xì)介紹(1)

    e2studio(1)----芯片搭建FSP環(huán)境

    視頻教學(xué) 樣品申請 請勿添加外鏈 e2studio軟件 e2studio是的集成開發(fā)環(huán)境,FSP 提供了眾多可提高效率的工具,用于開發(fā)
    發(fā)表于 09-30 15:28

    RA4系列開發(fā)板體驗(yàn)】開發(fā)環(huán)境搭建和新手點(diǎn)燈指南

    RA4系列開發(fā)板體驗(yàn)】開發(fā)環(huán)境搭建和新手點(diǎn)燈指南
    發(fā)表于 11-24 22:54

    RA4系列開發(fā)板體驗(yàn)】10. 我的試用總結(jié)

    之前發(fā)帖:【RA4系列開發(fā)板體驗(yàn)】1. 新建工程+按鍵控制LED【
    發(fā)表于 12-10 22:34

    RA4系列開發(fā)板體驗(yàn)】體驗(yàn)過程

    拿到板子之后,做了幾個實(shí)驗(yàn)過程,過程如下:1、在好奇心驅(qū)動下,逐步接觸;參照網(wǎng)上的實(shí)例,學(xué)習(xí)開發(fā)環(huán)境一、開箱驗(yàn)貨二、搭建環(huán)境參考“ 【
    發(fā)表于 12-18 16:20

    STM32Cube HAL中斷處理機(jī)制 以及調(diào)函數(shù)實(shí)現(xiàn)原理

    STM32Cube HAL中斷處理機(jī)制,以及調(diào)函數(shù)實(shí)現(xiàn)原理
    的頭像 發(fā)表于 03-03 14:01 ?1.5w次閱讀

    HAL中斷處理以及相關(guān)的調(diào)函數(shù)

    驅(qū)動的開發(fā)時間,把重心放在應(yīng)用代碼上。 ? 但是,STM32CubeMX只是生成了底層驅(qū)動的初始化代碼。所以,我們還需要掌握:應(yīng)用層代碼如何調(diào)用HAL庫函數(shù)(API接口),以及HAL中斷
    的頭像 發(fā)表于 01-07 11:46 ?1.1w次閱讀
    HAL<b class='flag-5'>庫</b><b class='flag-5'>中斷</b>處理以及相關(guān)的<b class='flag-5'>回</b><b class='flag-5'>調(diào)</b><b class='flag-5'>函數(shù)</b>

    e2studio(1)----芯片搭建FSP環(huán)境

    e2studio是的集成開發(fā)環(huán)境,FSP 提供了眾多可提高效率的工具,用于開發(fā)針對
    的頭像 發(fā)表于 11-14 17:08 ?3099次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b>e2studio(1)----<b class='flag-5'>瑞</b><b class='flag-5'>薩</b>芯片<b class='flag-5'>之</b>搭建<b class='flag-5'>FSP</b>環(huán)境

    【有獎直播預(yù)報名】電子RA系列產(chǎn)品開發(fā)工具FSP4.0.0新特性介紹

    為使用電子RA系列ARM微控制器的嵌入式系統(tǒng)設(shè)計提供簡單易用且可擴(kuò)展的高質(zhì)量軟件。 直播主題
    的頭像 發(fā)表于 11-22 12:20 ?1500次閱讀

    【視頻教程】RA單片機(jī)FSP開發(fā)(3)FSP架構(gòu)-解釋Blinky架構(gòu)[上]

    干貨分享 前篇回顧 【視頻教程】RA單片機(jī)FSP開發(fā)(1)環(huán)境搭建(帶RASC) 【視頻教程】
    的頭像 發(fā)表于 12-06 12:15 ?1878次閱讀

    RA產(chǎn)品家族初學(xué)者指南-第11章(3)

    RA產(chǎn)品家族初學(xué)者指南系列文章 已收錄成合集,歡迎點(diǎn)擊上方查看合集并訂閱! 11. 安全性和TrustZone 本章目錄 什么是Tr
    的頭像 發(fā)表于 02-03 01:55 ?1335次閱讀

    基于RA0E1開發(fā)板的ThreadX實(shí)時操作系統(tǒng)串口顯測試

    感謝立創(chuàng)提供測試機(jī)會,學(xué)到RA0及MCU的相關(guān)使用。使用FSP
    的頭像 發(fā)表于 02-25 09:27 ?1162次閱讀
    基于<b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b>0E1<b class='flag-5'>開發(fā)</b>板的ThreadX實(shí)時操作系統(tǒng)串口<b class='flag-5'>回</b>顯測試

    電子RA系列微控制器的可擴(kuò)展性強(qiáng)的配置軟件包 (FSP)安裝下載與使用指南

    電子RA系列微控制器的可擴(kuò)展性強(qiáng)的配置軟件包 (FSP)安裝下載與使用指南
    的頭像 發(fā)表于 06-11 17:21 ?1785次閱讀