chenpeng8848 发表于 2016-9-1 10:19:40

STM32F103VBT6 UART1 在IAP后无法正常使用

使用的了管方提供的IAP程序下载了我的程序,其他功能都正常指示UART1/3的无法使用的。。
#define MAIN_H
#include "main.h"

int main(void)
{
          uint32_t i;
      
                for(i = 0;i < 0x0000fffff;i++){;}                                 
                RCC_Configuration();
                NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000);
                //      NVIC_VectTab_FLASH
                //      NVIC_VectTab_RAM      
                RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1|RCC_AHBPeriph_DMA2,ENABLE);                        
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|
                                                                                                         RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|
                                                                                                         RCC_APB2Periph_AFIO|RCC_APB2Periph_TIM1 |
                                                                                                         RCC_APB2Periph_USART1 ,ENABLE);                        
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 |RCC_APB1Periph_USART3, ENABLE);
                        

                Ctrlbox_System_Init();      
                Varinit();                  
      

          TIM_Cmd(TIM2, ENABLE);                           //TIM2ʹÄÜ
                USART_Cmd(USART1, ENABLE);               //UART1ʹÄÜ
                USART_Cmd(USART3, ENABLE);         //UART3ʹÄÜ               
                __enable_irq();//¿ªÆô×ÜÖжϠ              
                for(i = 0;i < 0x0000fffff;i++){;}                     /*????*/
                        
               
                for(;;)                                                                                                               //È·ÈϵÚÒ»´Î¿ª¹ØÁ¿¶ÁÈë      
                {if(InputProcEnable == 1){break;}//¿ª¹ØÁ¿¶ÁÈëÖÕֹѭ»·
               else{Uart1_Comm_Proc();}          //¿ª¹ØÁ¿ÎÞ·¨¶ÁÈë±£³ÖͨÐÅ
                }               
                while(1);

void USART1_IRQHandler (void)//UART1ÖжϺ¯Êý
{

                uint8_ttemp;
      
                if(USART_GetITStatus(USART1, USART_IT_RXNE)== SET)//½ÓÊÕ±ê־λ
                {                        
                              USART_ClearITPendingBit(USART1,USART_IT_RXNE);                         //Çå³ýÖжϱêÖ¾
                            temp = USART_ReceiveData(USART1);                                                   //¶ÁÈ¡Êý¾Ý               
                        
                                        //USART_SendData(USART1, temp);//¶ÁÈ¡·´À¡      
                                        if ((Uart1_Control.CommReceiveHead == 0) && (Uart1_Control.CommReceiveTail == 0)) //Ö¡Æôʼ±êÖ¾ÎÞ£¬Ö¡½áÊø±êÖ¾ÎÞ£¬
                                        {
                                                      if (temp == '{')//Åж¨Ê××Ö½ÚΪ¡°{¡±
                                                      {                           


chenpeng8848 发表于 2016-9-1 10:24:08

我在主函数初始化中加了
                USART_SendData(USART1, 0x31);
                USART_SendData(USART3, 0x31);
两个发送字符函数就好用了,求高手指点
页: [1]
查看完整版本: STM32F103VBT6 UART1 在IAP后无法正常使用