初级会员

- 积分
- 106
- 金钱
- 106
- 注册时间
- 2015-6-10
- 在线时间
- 0 小时
|

楼主 |
发表于 2015-6-11 11:39:59
|
显示全部楼层
还得补充一个问题
//开启一次LCD DMA传输
//x:其实传输地址编号(0~240)
void LCD_DMA_Enable(u16 x)
{
//因为DMA每次传输数据有限,故分两次传输.
//第一次传输
DMA_Cmd(DMA2_Channel5,DISABLE); //关闭DMA传输
DMA_ClearFlag(DMA2_FLAG_TC5); //清除上次的传输完成标记
LCD_CUR_LINE=x;
DMA2_Channel5->CNDTR=DMA2_MEM_LEN;
DMA2_Channel5->CPAR=(u32)LCD_GRAM_BUF[LCD_CUR_LINE]; //DMA2,改变存储器地址
DMA_Cmd(DMA2_Channel5, ENABLE);//开启DMA传输
while(DMA_GetFlagStatus(DMA2_FLAG_TC5)==RESET); //等待
//第二次传输
DMA_ClearFlag(DMA2_FLAG_TC5); //清除上次的传输完成标记
DMA2_Channel5->CPAR=(u32)LCD_GRAM_BUF[LCD_CUR_LINE+120]; //DMA1,改变存储器地址
DMA_Cmd(DMA2_Channel5,DISABLE); //关闭DMA传输
DMA2_Channel5->CNDTR=DMA2_MEM_LEN;
DMA_Cmd(DMA2_Channel5, ENABLE);//开启DMA传输
while(DMA_GetFlagStatus(DMA2_FLAG_TC5)==RESET); //等待
}
这个x是什么作用?为啥第二次传输DMA2_Channel5->CPAR=(u32)LCD_GRAM_BUF[LCD_CUR_LINE+120]; 其中LCD_CUR_LINE+120又是什么原因这么变化? |
|