在线时间0 小时
UID301751
ST金币0
蝴蝶豆0
注册时间2011-6-26
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
菜鸟刚入手STM32F103RBV6的板子,没什么底子,现在要写一个USART的串口输入输出字符串问题,以前用查询的方式出现乱码,现在采用中断方式,设一个接收的BUFFER在接收中断中,再在MAIN函数中输出,感觉很简单,却怎么也无法成功,在网上找了很多代码都不是很好,求好心大大指教~~~~~~,
下面是我自己根据一些例程写的代码,,,还是出错,不知道哪位大大可以帮忙指点,改来改去,在调试中一步一步运行能得到正确结果,但是全速运行就出现问题了,谁能帮忙改改~~~~~~C功底差~~有错请指正,
-------------------------刚刚尝试在if(RxHaveData != 0){}里的最前面加了一个DELAY(10000)问题居然解决 了。。。至今不知道是什么问题引起,求解
------------------------------------------------------------------------------------------------------------------------
stm32f10x_it.c里
#define NbrOfDataToRead 20
extern u8 Buffersize;
extern u8 RxHaveData;
extern u8 RxBuffer[NbrOfDataToRead];
extern u8 RxCounter;
extern u8 RxHaveData;
u8 tmp;
#define NbrOfDataToRead 20
<font color="#ff0000" size="2">
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
tmp = USART_ReceiveData(USART1);
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
if(RxCounter == NbrOfDataToRead || tmp == 0x0d||tmp == 0x0a)
{
if(RxCounter == 0)
{
RxHaveData = 0;
}
else
{
RxHaveData = 1;
}
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
}
else
{
RxBuffer[RxCounter] = tmp;
RxCounter++;
Buffersize++;
}
}
}
main.c主函数里
#include "stm32f10x_lib.h"
#define NbrOfDataToRead 20
ErrorStatus HSEStartUpStatus;
u8 RxBuffer[NbrOfDataToRead];
u8 RxCounter = 0;
u8 Buffersize = 0;
u8 RxHaveData = 0;
void USART_Configuration(void);
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
u8 Uart1_Putchar(u8 ch);
void Uart1_Putstring(u8* buf, u8 len);
void Uart1_Putstring1(u8* buf);
<span style="color: rgb(51, 51, 153);">int main(void)
{
u8 j = 0;
u8 TxBuf[]="Welcome to my STM32!\r\n";
RCC_Configuration();
GPIO_Configuration();
USART_Configuration();
NVIC_Configuration();
while (1)
{
if(j |
|