初级会员
- 积分
- 55
- 金钱
- 55
- 注册时间
- 2016-11-29
- 在线时间
- 16 小时
|
1金钱
【【【【这是发送板】】】】
#include "stm8s.h"
#include "stm8s_clk.h"
#include "stm8s_gpio.h"
#include "stm8s_iwdg.h"
#include "delay.h"
void Init_UART1(void)
{
UART1_DeInit();
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
// UART1_Cmd(ENABLE);
}
void Send(uint8_t dat)
{
while(( UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));
UART1_SendData8(dat);
Delay_ms(100);
}
void GPIO_init(void)
{
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOC);
GPIO_DeInit(GPIOD);
}
void main(void)
{
uint8_t i = 0;
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
Init_UART1();
GPIO_init();
enableInterrupts();
GPIO_WriteHigh(GPIOD,GPIO_PIN_2);
/* Infinite loop */
while (1)
{
led(1);
Send(i);
i++;
if(i>250)
{
i=0;
}
}
}
【【【这是接收】】】
#include "stm8s.h"
#include "stm8s_clk.h"
#include "stm8s_gpio.h"
#include "stm8s_iwdg.h"
#include "delay.h"
#include "led.h"
void Delay(uint16_t nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
void Init_UART1(void)
{
UART1_DeInit();
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_RX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
// UART1_Cmd(ENABLE);
}
void Receive(uint8_t dat)
{
while(( UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));
UART1_ReceiveData8();
Delay_ms(100);
}
void GPIO_init(void)
{
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOC);
GPIO_DeInit(GPIOD);
}
void main(void)
{
uint8_t a= 100 ;
uint8_t i;
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
Init_UART1();
GPIO_init();
enableInterrupts();
GPIO_WriteLow(GPIOC,GPIO_PIN_7);
/* Infinite loop */
while (1)
{
Receive(i);
if(a>i )
{
led(1);
Delay_ms(100);
led(0);
}
else
{
led(0);
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
我找到问题了,原来是因为位的问题,我一直发送接收8位数据,改成9位就好了,但是我有个疑问,为什么8位数据,发送100错了,不是应该256吗,即使减去停止位,也应该是128为上限,没搞懂。
|