| 
 
| 我用232通讯,发现仿真时候,IO口接收不到数据。用示波器捕捉了下 MAX232的输出口  有时序的变化。想请问下大婶们  这个问题可能发生在什么位置,我以前是弄485的 232通讯是第一次用。不知道这两个在编程上面有什么区别? void UART3_Init(unsigned short baudrate)
 {
 GPIO_InitTypeDef GPIO_InitStructure;
 
 USART_InitTypeDef USART_InitStructure;
 
 //        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
 //        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
 //        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 //        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 //        GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
 USART_DeInit(USART3);
 
 USART_InitStructure.USART_BaudRate = baudrate;
 USART_InitStructure.USART_WordLength = USART_WordLength_8b;        //字长8
 USART_InitStructure.USART_StopBits = USART_StopBits_1;//1位停止位
 USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶
 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无流控制
 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//打开rx跟tx功能
 USART_Init(USART3, &USART_InitStructure);//初始化
 USART_Cmd(USART3, ENABLE);//启动串口
 while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);
 USART_ClearFlag( USART3, USART_FLAG_TC );//发送完成标志
 }
 这个是配置口
 这个是优先级配置
 void NVIC_Configuration(void)
 {
 NVIC_InitTypeDef NVIC_InitStructure;
 #ifdef  VECT_TAB_RAM
 NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
 #else
 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
 #endif
 
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
 
 
 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
 
 
 //          NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
 //          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
 //          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 //          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 //          NVIC_Init(&NVIC_InitStructure);
 
 //    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
 //                NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0 ;
 //                NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 //                NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 //                NVIC_Init(&NVIC_InitStructure);
 
 //    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
 
 NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0 ;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
 
 USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
 }
 void SYS_Init(void)
 {
 uchar i;
 IO_Init();                                                                                                                        //将相关IO口初始化
 UART3_Init(9600);                                                                                                //将串口3波特率设为9600,且将其初始化
 TIM2_Int_Init(10000-1,7200-1);//1s                   //将定时器2定时时间设为1秒,并将其初始化
 TIM3_Int_Init(208-1,72-1);//20ms/96                   //将定时器3定时时间设为20/96ms,并将其初始化
 //        TIM4_Int_Init(10000-1,4800-1);//0.667s        //将定时器4定时时间设为0.667s
 NVIC_Configuration();                                                                           //设置中断嵌套优先级
 RTCInit();                                                                                                                   //初始化RTC实时时钟,显示初始时间为2014年1月1日
 Iwdg_Init();                                                                                                           //初始化独立看门狗
 for(i=0;i<9;i++)
 {
 power_rule[i]=0;
 power_Delay[i]=0;
 }
 
 }
 | 
 |