STM32
直播中

李莉

7年用户 1342经验值
私信 关注
[问答]

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_t  temp;
        
                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 == '{')//Åж¨Ê××Ö½ÚΪ¡°{¡±
                                                        {                           



回帖(1)

吴晓成

2024-5-9 15:35:34
我在主函数初始化中加了
                USART_SendData(USART1, 0x31);
                USART_SendData(USART3, 0x31);
两个发送字符函数就好用了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分