#include<STM8S105K4.h>
void UART1_Init(void)
{
UART2_CR2 = 0; // 禁止UART发送和接收
UART2_CR1 = 0; // b5 = 0,允许UART,禁止奇偶校验
//一个起始位,8个数据位
UART2_CR3 = 0; // 1个停止位
UART2_BRR2 = 0;
UART2_BRR1 = 0x0d; // 实际的波特率分频系数为00D0(208)
// 对应的波特率为2000000/208=9600
UART2_CR2 = 0x0C; // b3 = 1,允许发送
// b2 = 1,允许接收
}
void UART1_SendChar(unsigned char ch)
{
while((UART2_SR & 0x80) == 0x00); // 若发送寄存器不空,则等待
UART2_DR = ch; // 将要发送的字符送到数据寄存器
}
main()
{
// 首先初始化UART3
UART1_Init();
//初始化IO口,即485的片选 信号PD3
PD_DDR = 0x08;
PD_CR1 = 0x08; // 将PD3设置成推挽输出
PD_CR2 = 0x00;
while(1) // 进入无限循环
{
PD_ODR=0x08; //PD3口输出1
UART1_SendChar(0x12);
}
}
通过485-232电平转换接口后,串口调试助手没有反应。。。。 |