亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mvp_dma.c

?? 新買的書
?? C
?? 第 1 頁 / 共 2 頁
字號:
interrupt void refresh_video_DMA()
{
// Setup the transfer count register.
LOAD_FIELD(&dma_video_tcnt, FRAMES_PER_BLOCK, FRAME_COUNT,
FRAME_COUNT_SZ);
LOAD_FIELD(&dma_video_tcnt, NUM_ELEMENTS, ELEMENT_COUNT,
ELEMENT_COUNT_SZ);
/*
* The tcnt has been refreshed, so now we just have to
* reload the dma_init function again.
*/
dma_init(
VIDEO_DMA,
dma_video_prim_ctrl,
dma_video_sec_ctrl,
DMA_VIDEO_SRC_ADDR,
vid_addr_global,
dma_video_tcnt);
/*
* Enable the IRQ7 interrupt again, so we can get a new image when
* it becomes available. Also, the block_cond bit of the
* secondary control register will need to be reset, so we can tell when
* the next dma transfer is completed.
*/
INTR_ENABLE(CPU_INT7);
RESET_REG_BIT(DMA0_SECONDARY_CTRL,BLOCK_COND);
}
/*
* start_video_transfer() -
*
* This function starts the transfer of the block of video data
* (an entire image). It does this by disabling the IRQ7, so the calling
* DMA functions cannot be interrupted, and then the DMA for the video is
* started.
*/
interrupt void start_video_transfer()
{
INTR_DISABLE(CPU_INT7);
DMA_START(VIDEO_DMA);
}
/*
* refresh_audio_DMA() -
*
* This function refreshes the audio DMA registers after the
* completion of the 4000 elements from the VBAP
*/
interrupt void refresh_audio_DMA()
{
// Temporarily halt the audio DMA channel
DMA_STOP(AUDIO_DMA);
/*
* Refreshing the element count in the transfer count register
*/
LOAD_FIELD(&dma_audio_tcnt, AUD_ELEM_NUM, ELEMENT_COUNT,
ELEMENT_COUNT_SZ);
// Reload the dma registers.
dma_init(
AUDIO_DMA,
dma_audio_prim_ctrl,
dma_audio_sec_ctrl,
MCBSP_DRR_ADDR(1),
aud_addr_global,
dma_audio_tcnt);
/*
* Clear the frame condition in the secondary audio dma register
*/
RESET_REG_BIT(DMA1_SECONDARY_CTRL, BLOCK_COND);
/*
* Restart the audio DMA channel
*/
DMA_START(AUDIO_DMA);
}
/*
* refresh_and_manip_data_DMA() -
*
* This function refreshes the data DMA, and also alters
* the received stream into 32 bit data segments.
*/
interrupt void refresh_and_manip_data_DMA()
{
int i,j;
uint ourdata = 0;
uint ourbyte = 0;
short cnt = -1; // used for determining position in the receive buffer
// relative to data
short rec_val;
unsigned short raw_data;
unsigned short *buffptr;
/*
* Temporarily stop the DMA channel
*/
DMA_STOP(DATA_DMA);
/*
* Refreshing the dma registers associated with the serial data
*/
LOAD_FIELD(&dma_data_tcnt, 1, FRAME_COUNT, FRAME_COUNT_SZ);
LOAD_FIELD(&dma_data_tcnt, DATA_ELEM_NUM, ELEMENT_COUNT,
ELEMENT_COUNT_SZ);
dma_init(
DATA_DMA,
dma_data_prim_ctrl,
dma_data_sec_ctrl,
MCBSP_DRR_ADDR(0),
datarecaddr,
dma_data_tcnt);
/*
* Rearrange the stored in our received data register (at UARTRECADDR)
* into 32-bit words
*/
buffptr = (unsigned short *) UARTRECADDR;
for (i = 0; i < DATA_ELEM_NUM; i++) {
rec_val = 0;
// The loop below is the loop associated with connecting the
// bytes together into a 32-bit structure.
for (j = 0; j < 4; j++) {
for (cnt = -1; cnt < 10; cnt++) {
if ((cnt == -1) || (cnt == 8) || (cnt == 9)) {
// ignoring the start and stop bits
buffptr++;
} else {
raw_data = *buffptr;
buffptr++;
// Determine whether the data was a logical
// '1' or '0'
switch ((raw_data >> 6) & 0xf) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 8:
case 9:
case 10:
rec_val = 0;
break;
case 7:
case 11:
case 12:
case 13:
case 14:
case 15:
rec_val = 1;
break;
}
ourbyte += rec_val << cnt;
}
}
// We now have a total byte, so insert it into our unsigned int,
// but only if the uint has not been filled.
ourdata = ourbyte << (j*8);
}
// The 32-bit structure is now completely full, so write it into the
// correct memory location.
*datastorage = ourdata;
if (datastorage == (float *)(0x033FC7F)) {
datastorage = (float *)(0x03000000);
} else {
datastorage++;
}
}
}
/*
* init_int_data_dma() -
*
* This function is called when an internal DMA transfer is required
* to be completed.
*/
void init_int_data_dma(float *dest, int destStep, float *source, int sourceStep, int floats, int frames, int
frameStep)
{
/*
* Internal Data Setup
*
* This section is concerned with the setting up of the
* internal data transfer DMA.
*/
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_RELOAD_NONE, DST_RELOAD,
DST_RELOAD_SZ);
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_RELOAD_NONE, SRC_RELOAD,
SRC_RELOAD_SZ);
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_NO_EM_HALT , EMOD , 1 );
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_CPU_PRI , PRI , 1 );
LOAD_FIELD(&dma_int_data_prim_ctrl, SEN_NONE , WSYNC , WSYNC_SZ );
LOAD_FIELD(&dma_int_data_prim_ctrl, SEN_NONE , RSYNC , RSYNC_SZ );
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_CNT_RELOADA, CNT_RELOAD, 1 );
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_SPLIT_DIS , SPLIT , SPLIT_SZ );
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ESIZE32 , ESIZE , ESIZE_SZ );
/*
* Setting up how the pointer to the destination address is modified
* at the end of the transfer
*/
switch (destStep) {
case -1:
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ADDR_DEC, DST_DIR ,
DST_DIR_SZ );
break;
case 0:
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ADDR_NO_MOD,
DST_DIR , DST_DIR_SZ );
break;
case 1:
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ADDR_INC, DST_DIR ,
DST_DIR_SZ );
break;
default:
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ADDR_INDX, DST_DIR ,
DST_DIR_SZ );
break;
}
/*
* Setting up how the pointer to the source address is modified at the
* end of the transfer
*/
switch (sourceStep) {
case -1:
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ADDR_DEC, SRC_DIR,
SRC_DIR_SZ );
break;
case 0:
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ADDR_NO_MOD,
SRC_DIR, SRC_DIR_SZ );
break;
case 1:
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ADDR_INC, SRC_DIR,
SRC_DIR_SZ );
break;
default:
LOAD_FIELD(&dma_int_data_prim_ctrl, DMA_ADDR_INDX, SRC_DIR,
SRC_DIR_SZ );
break;
}
/* Set up internal data DMA Tranfer Count Register */
LOAD_FIELD(&dma_int_data_tcnt, floats, ELEMENT_COUNT, ELEMENT_COUNT_SZ);
LOAD_FIELD(&dma_int_data_tcnt, frames, FRAME_COUNT, FRAME_COUNT_SZ);
/*
* Casting and setting the source and dest pointers
*/
dma_int_data_src_addr = (unsigned int)source;
dma_int_data_dst_addr = (unsigned int)dest;
/*
* Setting up the global registers for the internal data transfer
*/
LOAD_FIELD(&dma_gcrb, floats, ELEMENT_COUNT_RELOAD,
ELEMENT_COUNT_RELOAD_SZ);
LOAD_FIELD(&dma_gndxb, frameStep - (floats-1)*4, FRAME_INDEX,
FRAME_INDEX_SZ);
if (ABS(destStep) > 1) { /* If destStep is non-generic */
LOAD_FIELD(&dma_gndxb, destStep, ELEMENT_INDEX,
ELEMENT_INDEX_SZ);
} else if (ABS(sourceStep)> 1) { /* If sourceStep is non-generic */
LOAD_FIELD(&dma_gndxb, sourceStep, ELEMENT_INDEX,
ELEMENT_INDEX_SZ);
}
/*
* Initialising the Internal Data DMA controller
*/
dma_init(
INT_DATA_DMA,
dma_int_data_prim_ctrl,
dma_int_data_sec_ctrl,
dma_int_data_src_addr,
dma_int_data_dst_addr,
dma_int_data_tcnt);
/*
* Setting up the global DMA for use with the inter
* data transfer function.
*/
dma_global_init(
0x0, // aux control reg
dma_gcra, // multiframe video transfers
dma_gcrb, // global count reload B - used in internal transfers.
dma_gndxa, // programmable index for reloading video dst addresses
dma_gndxb, // global index reg B - not used
0x0, // global addr register A - not used
0x0, // global addr register B - not used
0x0, // global addr register C - not used
0x0); // global addr register D - not used
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人女星排名| 麻豆国产精品官网| 免费观看久久久4p| 不卡一区二区中文字幕| 日韩欧美精品在线| 亚洲午夜一二三区视频| 97精品国产97久久久久久久久久久久| 欧美日韩久久不卡| 亚洲六月丁香色婷婷综合久久| 蜜桃av一区二区| 欧美亚洲综合久久| 亚洲丝袜美腿综合| 国产精品综合一区二区| 欧美精品国产精品| 一区二区三区鲁丝不卡| 不卡视频在线观看| 国产精品久久久久久户外露出| 久久精品国产免费看久久精品| 欧美日韩成人综合天天影院 | 欧美一二三在线| 亚洲免费观看高清完整版在线观看熊| 国产成人免费在线观看| 欧美v日韩v国产v| 日本中文字幕一区| 宅男在线国产精品| 亚洲高清免费一级二级三级| 色综合视频一区二区三区高清| 中文字幕国产一区| 国产老女人精品毛片久久| 日韩一级黄色片| 另类小说综合欧美亚洲| 欧美一区二区福利视频| 日韩电影在线看| 欧美一区二区三区男人的天堂| 午夜伦欧美伦电影理论片| 95精品视频在线| 亚洲视频一二三| 欧美性猛交xxxxxxxx| 亚洲综合丝袜美腿| 91污片在线观看| 亚洲视频图片小说| 欧美三日本三级三级在线播放| 午夜精品一区在线观看| 欧美一区二区三区婷婷月色| 久久成人18免费观看| 久久久久久综合| 91免费在线看| 天堂在线亚洲视频| 精品日韩99亚洲| 成人免费视频免费观看| 亚洲精品精品亚洲| 在线播放欧美女士性生活| 理论电影国产精品| 国产精品无码永久免费888| 99久久婷婷国产精品综合| ...xxx性欧美| 欧美一二三区精品| 国产精品一二三四五| 亚洲视频免费观看| 欧美精品 国产精品| 久久精品国产色蜜蜜麻豆| 中文字幕一区二区三区不卡| 欧美日韩情趣电影| 国产黄人亚洲片| 亚洲国产欧美在线人成| 日韩一区二区三区高清免费看看 | 午夜视频一区二区三区| 日韩视频123| 成人av在线资源| 日韩精品一级中文字幕精品视频免费观看| 精品欧美久久久| 99国产欧美久久久精品| 日本大胆欧美人术艺术动态| 精品福利av导航| 欧美性极品少妇| 福利一区在线观看| 美国十次了思思久久精品导航| 国产精品久久久久久久久久免费看| 777久久久精品| www.欧美.com| 久久国产精品区| 亚洲女与黑人做爰| 精品久久久久久久久久久院品网| 日本电影欧美片| 国产一区二区在线免费观看| 亚洲第一在线综合网站| 国产精品久久久久久亚洲毛片| 欧美伦理电影网| 91老司机福利 在线| 精品一二三四区| 天堂蜜桃一区二区三区| 一区二区三区在线免费观看| 国产欧美日韩中文久久| 日韩欧美国产一二三区| 欧美性猛片aaaaaaa做受| 国产aⅴ综合色| 久久99精品久久久久婷婷| 污片在线观看一区二区| 亚洲欧洲中文日韩久久av乱码| 久久影视一区二区| 日韩欧美第一区| 91精品国产91久久久久久最新毛片| 色综合天天做天天爱| 成人av在线观| 高清成人免费视频| 国产99久久久国产精品潘金网站| 麻豆精品精品国产自在97香蕉| 亚洲国产三级在线| 一区二区国产视频| 亚洲欧美日韩在线播放| 国产欧美日韩在线看| 久久先锋影音av| 久久久不卡网国产精品二区| 2024国产精品| 久久久久久久免费视频了| 久久亚洲私人国产精品va媚药| 日韩欧美一二三四区| 精品国产一区二区三区av性色| 欧美一区二区成人| 精品欧美乱码久久久久久 | 激情综合亚洲精品| 美女在线一区二区| 美女国产一区二区三区| 久久99精品视频| 成人性生交大合| gogogo免费视频观看亚洲一| av在线免费不卡| 色悠久久久久综合欧美99| 在线观看网站黄不卡| 欧美日韩一级二级三级| 91精品视频网| 26uuu国产电影一区二区| 亚洲国产精品成人综合| 亚洲欧美成人一区二区三区| 亚洲成人免费电影| 开心九九激情九九欧美日韩精美视频电影| 麻豆视频观看网址久久| 国产suv精品一区二区883| av电影在线观看一区| 欧美综合一区二区三区| 日韩美女在线视频| 国产精品免费久久| 亚洲一区二区视频在线观看| 日韩专区欧美专区| 国模一区二区三区白浆| 99re成人在线| 欧美一区二区三区在线观看视频| 精品国产三级电影在线观看| 国产精品久久久久久久浪潮网站 | 欧美系列日韩一区| 日韩精品一区二区三区视频| 中文字幕永久在线不卡| 亚洲国产成人av网| 国产成人免费视| 欧美日韩一二三| 国产欧美一区二区精品久导航| 亚洲在线成人精品| 国产精品综合一区二区| 欧美日韩国产区一| 久久久不卡网国产精品一区| 亚洲成人午夜影院| 岛国一区二区在线观看| 欧美日韩国产综合久久| 国产精品女人毛片| 久久99精品国产麻豆不卡| 91理论电影在线观看| 久久精品亚洲麻豆av一区二区| 亚洲中国最大av网站| 国产成人综合在线| 欧洲一区二区三区在线| 久久久久久久久岛国免费| 亚洲成人7777| 91麻豆福利精品推荐| 国产亚洲自拍一区| 亚洲国产成人精品视频| 99久久99久久综合| 久久综合九色综合欧美就去吻| 亚洲高清不卡在线| 北条麻妃国产九九精品视频| 精品成人一区二区三区四区| 亚洲电影在线免费观看| 色偷偷久久人人79超碰人人澡 | 国产精品久久久久久久久久久免费看| 日韩不卡一区二区三区| 91免费观看在线| 国产精品久久久一本精品| 国产一区二区三区香蕉| 精品久久人人做人人爰| 日韩精品电影一区亚洲| 欧美日韩国产123区| 亚洲国产成人av| 欧美中文字幕久久| 一区二区三区四区视频精品免费| 成人黄色在线看| 国产精品美女久久久久高潮| 国产成人啪免费观看软件| 国产午夜精品久久久久久免费视 | 国产一区视频导航| 精品国产乱码久久久久久免费| 久久国产精品露脸对白|