一个简单的问题:关于STM8串口使用疑惑。。。 这几天在使用3合1板子,在用到串口时,不能收发数据不知道是什么原因;使用光盘例程也是这样,望大侠、高手们指点一下, 相关的代码如下:(STVD编译器) 时钟初始化 void CLK_Init(void) { /* Configure HSI prescaler*/ CLK_CKDIVR &= ~0x10; /* 01: fHSI= fHSI RC output/2. */ /* Configure CPU clock prescaler */ CLK_CKDIVR |= 0x01; /* 001: fCPU=fMASTER/2. */ } 串口初始化 void UART1_INT(void) { /* LINUART configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Receive and transmit enabled - LINUART Clock disabled */ CLK_PCKENR1 |= 0X08; //开启时钟 LINUART_CR1 = 0x00; LINUART_CR3 = 0x00; LINUART_BRR2 = 0x03; LINUART_BRR1 = 0x02; LINUART_CR2 = 0x2C; } I/O初始化 PD_DDR |= 0x3D; /* Output. */ PD_CR1 |= 0xFD; /* PushPull. */ PD_CR2 = 0x00; 主程序 void main(void) { _asm("sim"); CLK_Init(); GPIO_Init(); UART1_INT(); PD_ODR=0x04; _asm("rim"); while (1) {} } 中断相关 @far @interrupt void UART1_RX_IRQHandler(void) { unsigned char ch; ch=LINUART_DR; if(ch==0x0A)PD_ODR ^= 0x01; return; } {0x82, USART_TX}, /* irq20 */ {0x82, UART1_RX_IRQHandler}, /* irq21 */ |
从零开始操作STM8寄存器(风驰iCreate奉献)
【中文资料】初学STM8库函数的中文帮助软件
绝对经典的中文STM8学习手册,淘宝上学习板资料,友情大放送!
【原创教程】风驰iCreate独家开源STM8 27个例程和10多万字的pdf教程
STM8的LCD1602 4线驱动,为什么不工作
【精华资料】由零开始开发STM8
STM8S 的触摸库是如何在主程序中查询键的呢、
【精华资料】STM8的C语言编程1-14讲完整版
【精品教程】STM8系列单片机入门教程系列
STM8 第一次进中断不准【悬赏问答】
RE:一个简单的问题:关于STM8串口使用疑惑。。。
{
u16 BD = 16000000/baudrate;
UART1->BRR2 = (u8)((BD>>12)&0xf0) + (u8)(BD&0x0f);
UART1->BRR1 = (u8)(BD>>4);
//TXD
GPIOD->DDR |=GPIO_PIN_5;//方向输出
GPIOD->CR1 |= GPIO_PIN_5;//
GPIOD->ODR |=GPIO_PIN_5;//数据为1数据无效
//RXD
GPIOD->DDR &=~GPIO_PIN_6;//方向输入
GPIOD->ODR |=GPIO_PIN_6;//数据为1
UART1->CR2 |= UART1_CR2_TEN|UART1_CR2_REN;//发送使能
iscmdval=0;//命令接受有效
}
这个是可以用的,你试试看,在HJSTM8调试器上编译通过,在CYM8DVK上编译运行过,没有问题