|
为什么我的程序在同时用到串口通信和spi的oled以及ADC的时候,他们各自的反应都会很慢,SPI的oled显示正常了,但是串口调试助手都没反应的。
主函数代码如下,然后我ADC用的PA0引脚,接的一个光敏传感器
SPI led用的PD的五个引脚
串口用的PA9,
希望大神能给我解答。感激不尽
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "adc.h"
#include "oled.h"
/*******************************************************************************
* º¯ Êý Ãû : main
* º¯Êý¹¦ÄÜ : Ö÷º¯Êý
* Êä Èë : ÎÞ
* Êä ³ö : ÎÞ
*******************************************************************************/
void OLED_start(void)
{OLED_Display_On();
OLED_Init();//³õʼ»¯
OLED_Display_On();//´ò¿ªoled
OLED_Clear();//ÇåÆÁ
while(1)
{
OLED_ShowCHinese(0,0,4);
OLED_ShowCHinese(18,0,5);//¹âÕÕϵÊý
OLED_ShowCHinese(36,0,6);
OLED_ShowCHinese(54,0,7);
OLED_ShowCHinese(0,3,8);
OLED_ShowCHinese(18,3,9);
OLED_ShowCHinese(36,3,10);//²É¼¯µçѹ
OLED_ShowCHinese(54,3,11);
OLED_ShowCHinese(0,6,12);
OLED_ShowCHinese(18,6,13);
OLED_ShowCHinese(36,6,14);//¼ÌµçÆ÷
OLED_ShowString(70,0,":");// :
OLED_ShowString(70,3,":");
OLED_ShowString(54,6,":");
OLED_ShowString(116,3,"v");
// OLED_ShowString(70,0,":");// :
// OLED_ShowString(86,3,"'%.2f',vol");
// OLED_ShowString(100,6,"");
//
}
}
int main()
{ u8 flag=0;
u8 i=0;
u16 value=0;
float vol;
// char str[]={"¿ª","¹Ø"}
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //ÖжÏÓÅÏȼ¶·Ö×é ·Ö3×é
LED_Init();
OLED_start();
USART1_Init(9600);
ADCx_Init();
while(1)
{
i++;
if(i%50==0)
{
value=Get_ADC_Value(ADC_Channel_1,20);
printf("¼ì²â¹âÕÕϵÊýΪ %d\r\n",value);
vol=(float)value*(3.3/4096);
printf("¼ì²âµçѹֵΪ %.2fV\r\n",vol);
}
delay_ms(10);
if(value<1500)
{
delay_ms(2000);
led3=0;flag=1;
}
if(value>=1500)
{
delay_ms(2000);
led3=1;flag=0;
}
}
}
|
|