为什么串口通讯时,用上系统时钟延时会死在延时里面?这个程序只运行了一次,把延时去掉或或者换成for又可以一直循环了

2019-08-14 06:29发布

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "led.h"
#include "key.h"
#include "system.h"
#include "usart.h"
  int main(void)
{   
          LED_GPIO_init();//3õê¼»ˉLED1ü½Å
          KEY_GPIO_init();//ÅäÖÃkey1ü½Å
          KEY_GPIO_init();
          EXTI_init();
          NVIC_init();
          uasrt_config();
          
   while(1)
         {                          
                 USART_SendData(USART1, 0x55);//Ñ¡Ôñ′®¿ú£¬·¢Ëíêy¾Y
                 
                 //delay_ms(50);
                 }
         }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
jiutianshenjian
1楼-- · 2019-08-14 11:45
没看到delay初始化
genius
2楼-- · 2019-08-14 15:45
jiutianshenjian 发表于 2017-8-22 17:07
没看到delay初始化

#include "system.h"
__IO uint32_t TimingDelay;
void Systick_init(void) //Ïμí3ê±Öó3õê¼»ˉ
   {
                 /*ÅäÖÃÏμí3êÇê±ÖóÖØÔØÖ죬Ïμí3ê±ÖóÎa72MH*/
                 /*éèÖÃ72000£¬ÖD¶Ïê±¼ä 72000*(1/72000000)=1ms*/
     if(SysTick_Config(72000)== 1)//·μ»ØÎa1£¬±íê¾éèÖÃ2»3é1|
                 {
                 while(1);
                 }

   }
         
void SysTick_Handler(void)//ÖD¶Ï′|àíoˉêy
         {
          TiningDelay_Decrement();
         }

void TiningDelay_Decrement(void)
{
         if(TimingDelay !=0x00)
         {
           TimingDelay--;
         }
}

void delay_ms(uint32_t nTime)//Ñóê±oˉêy
{
   TimingDelay = nTime;
         while(TimingDelay!= 0);
}
mesutozil
3楼-- · 2019-08-14 20:13
genius 发表于 2017-8-22 17:21
#include "system.h"
__IO uint32_t TimingDelay;
void Systick_init(void) //Ïμí3ê±Öó ...

好像是延时函数问题
jiutianshenjian
4楼-- · 2019-08-14 21:45
 精彩回答 2  元偷偷看……

一周热门 更多>