项目场景:
通过3个电容式触摸按键检测水位
问题描述
试图使串口每1s进行打印,实际Delay_ms()
函数参数最大为60才有输出,超过60串口调试助手上没有打印
#define _UART_C_
#include "ca51f_config.h"
#include "includes\ca51f3sfr.h"
#include "includes\ca51f3xsfr.h"
#include "includes\gpiodef_f3.h"
#include "includes\system.h"
#include "Library\includes\uart.h"
#include <intrins.h>
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <absacc.h>
/*********************************************************************************************************************/
#ifdef UART0_EN
void Uart0_Initial(unsigned long int baudrate)
{
unsigned int value_temp;
GPIO_Init(P31F,P31_UART0_RX_SETTING);
GPIO_Init(P30F,P30_UART0_TX_SETTING);
uart0_send.head=0;
uart0_send.tail=0;
uart0_rev.head=0;
uart0_rev.tail=0;
uart0_tx_flag=0;
/************************************************************************************************************************/
//TIMER2作为UART0的波特率发生器
value_temp = 0x10000 - FOSC/(baudrate*32);
T2CON = 0x24;
T2CH = (unsigned char)(value_temp>>8);
T2CL = (unsigned char)(value_temp);
TH2 = (unsigned char)(value_temp>>8);
TL2 = (unsigned char)(value_temp);;
TR2 = 1;
/************************************************************************************************************************/
S0CON = 0x50;
ES0 = 1;
}
void Uart0_PutChar(unsigned char bdat)
{
unsigned char free_space;
unsigned char tail_tmp;
while(1)
{
tail_tmp = uart0_send.tail;
if(uart0_send.head < tail_tmp)
{
free_space = tail_tmp - uart0_send.head;
}
else
{
free_space = UART0_TX_BUF_SIZE + tail_tmp - uart0_send.head;
}
if(free_space > 1)
{
ES0 = 0;
uart0_send.head++;
uart0_send.head %= UART0_TX_BUF_SIZE;
uart0_tx_buf[uart0_send.head] = bdat;
if(!uart0_tx_flag)
{
ES0 = 1;
uart0_send.tail++;
uart0_send.tail %= UART0_TX_BUF_SIZE;
S0BUF=uart0_tx_buf[uart0_send.tail];
uart0_tx_flag = 1;
}
else
{
ES0 = 1;
}
break;
}
}
}
void UART0_ISR (void) interrupt 4
{
if(RI0)
{
RI0 = 0;
uart0_rev.head++;
uart0_rev.head %= UART0_RX_BUF_SIZE;
uart0_rx_buf[uart0_rev.head]=S0BUF;
}
if(TI0)
{
TI0 = 0;
if(uart0_send.head!=uart0_send.tail)
{
uart0_send.tail++;
uart0_send.tail %= UART0_TX_BUF_SIZE;
S0BUF=uart0_tx_buf[uart0_send.tail];
}
else
{
uart0_tx_flag=0;
}
}
}
#endif
......
switch(WaterFlag)
{
case 1: TK_Debug_UartPutChar('a');
break;
case 2: TK_Debug_UartPutChar('b');
break;
case 3: TK_Debug_UartPutChar('c');
break;
case 4: TK_Debug_UartPutChar('d');
break;
}
Delay_ms(1000);
......