中级会员
 
- 积分
- 211
- 金钱
- 211
- 注册时间
- 2017-6-16
- 在线时间
- 46 小时
|
1金钱
向串口传输320*240个数据SendBuff=0xffff,串口接受到的数据是“(”。
怀疑是传输变量的指针有问题,下面红色那一句,例程里用的是8位数组变量,我这里改成了不变的16位数。c语言指针知识比较空白,感觉是这个地址设置的有问题,想知道不用数组该怎么改。
uint16_t SendBuff=0xffff;
void USARTx_DMA_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
DMA_InitStructure.DMA_PeripheralBaseAddr = (USART1_BASE+0x04);
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)SendBuff;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize = 320*240;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_PeripheralDataSize =DMA_PeripheralDataSize_Byte;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal ;
// DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA1_Channel4, &DMA_InitStructure);
DMA_Cmd (DMA1_Channel4,ENABLE);
}
下面是主函数:
int main ( void )
{
uint8_t buf1[1]={0xff};
uint8_t buf2[1]={0};
LED_GPIO_Config();
SysTick_Init(72000);// 72MHZ/72KHZ=1KHZ=1ms
TIM2_Configuration(9999,719);
TIM3_Configuration();
USART_Configuration(460800);
I2C_EE_Init();
USARTx_DMA_Config();
NVIC_Configuration();
while(1)
{
I2C_EE_ByteWrite(buf1, 0x80);
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
Delay_ms(500);
I2C_EE_BufferRead(buf2, 0x80,1);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
Delay_ms(500);
//printf("***%d***\r\n",buf2[0]);
USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);
}
}
|
|