准备做一个单片机与PLC通讯,利用usart1发送数据,利用示波器测试txd的波形。
示波器测得的波形一直在闪动,按下stop键后才能看清。
当传输是一个数组时,没有发现规律。
当传输是0x01时波形显示为00000001101。
注释掉的代码是数组传输,没注释的是单个数据的传输。
程序代码如下所示:
[mw_shl_code=c,true] int main(void)
{
u8 i;
u8 t=0;
u8 len;
u16 times=0;
u8 fasongshuzu[4]={0x01,0x02,0x03,0x0A};
SystemInit();//系统时钟等初始化
delay_init(72); //延时初始化
NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);//串口初始化为9600
LED_Init(); //LED端口初始化
while(1)
{
++t;
// if(t==1)
{
// for(i=0;i<4;i++)
{
USART_SendData(USART1,0x01);
// USART_SendData(USART1,fasongshuzu);
// while((USART1->SR&0X40)==0);//等待发送结束
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)!=SET);
}
USART_RX_STA=0;
}[/mw_shl_code]
请问各位高手,为什么会是这种情况。
示波器可以用来测试USART么?如果不可以的话应该如何测试呢?
是我测试的方法有问题还是程序有问题呢?
还是最后的是停止位?但是发送0x21的时候并没有这种规律。
小白玩家,困惑多日!诚心求教!不胜感激!
|