STM8 UART
时间:11-18
来源:互联网
点击:
STM8的UART功能强大,除了常规的串口异步通讯外,还拥有LIN主模式、红外编解码器、智能卡模拟等功能。新手还是从基本的串口通讯入手,那些高级功能等熟练以后再慢慢研究吧。
#i nclude
void CLK_init(void)
{
CLK_CKdivR = 0x08; // 16M内部RC经2分频后系统时钟为8M
}
void UART3_init(void)
{
UART3_BRR2 = 0x01; // 设置波特率9600
UART3_BRR1 = 0x34; // 8M/9600 = 0x341
UART3_CR2 = 0x2C; // 允许接收中断,允许接收,允许发送
}
#pragma vector=UART3_R_RXNE_vector
__interrupt void UART3_RX_RXNE(void)
{
unsigned char c;
c = UART3_DR; // 接收到数据了
while(!UART3_SR_TXE);
c++; // 把接收到的数据加1
UART3_DR = c; // 再发回去,为什么这么做?在电脑上串口调试软件里发1就收到2,发A就收到B,看运行结果比较方便
}
void init_devices(void)
{
asm("sim"); // 关全局中断
CLK_init();
UART3_init(); // 开发板上的串口接的是UART3,刚开始想当然的认为UART1,浪费我半个小时
asm("rim"); // 开全局中断
}
void main( void )
{
init_devices();
// 主循环里没有程序需要执行
while(1);
}
#i nclude
void CLK_init(void)
{
CLK_CKdivR = 0x08; // 16M内部RC经2分频后系统时钟为8M
}
void UART3_init(void)
{
UART3_BRR2 = 0x01; // 设置波特率9600
UART3_BRR1 = 0x34; // 8M/9600 = 0x341
UART3_CR2 = 0x2C; // 允许接收中断,允许接收,允许发送
}
#pragma vector=UART3_R_RXNE_vector
__interrupt void UART3_RX_RXNE(void)
{
unsigned char c;
c = UART3_DR; // 接收到数据了
while(!UART3_SR_TXE);
c++; // 把接收到的数据加1
UART3_DR = c; // 再发回去,为什么这么做?在电脑上串口调试软件里发1就收到2,发A就收到B,看运行结果比较方便
}
void init_devices(void)
{
asm("sim"); // 关全局中断
CLK_init();
UART3_init(); // 开发板上的串口接的是UART3,刚开始想当然的认为UART1,浪费我半个小时
asm("rim"); // 开全局中断
}
void main( void )
{
init_devices();
// 主循环里没有程序需要执行
while(1);
}
STM8UAR 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)