下载了ATK-SIM900A GSM/GPRS模块的资料! 然后移植了一部分 自己尝试在UCOSII上跑 直接程序上面串口2配置发送的是乱码 改了一下用之前自己配置好的库函数能发送了!
其中
void u2_printf(char* fmt,...) { va_list ap;va_start(ap,fmt);vsprintf((char*)USART2_TX_BUF,fmt,ap);va_end(ap);// while(DMA1_Channel7->CNDTR!=0);//等待通道7传输完成 //UART_DMA_Enable(DMA1_Channel7,strlen((const char*)USART2_TX_BUF)); //通过dma发送出去 UART2Write(USART2_TX_BUF,strlen((const char*)USART2_TX_BUF));}改成了这样
但是运行程序的时候发现这个函数又问题
ATNews_Semp=OSSemCreate(0);//创建完成 ATNews_Semp的地址是0x20000144
u2_printf("%srn",cmd);//发送命令}#ifdef OS_
tiCKS_PER_SECif(ack&&waittime)//需要等待应答{ OSSemPend(ATNews_Semp,0,&err); //到这里来的时候变成了0x0800006f1
运行完这个函数之后 ATNews_Semp的地址也变了!注释掉 u2_printf("%srn",cmd);//发送命令 就正常!
这个是什么原因呢??