恳请好心人给个STM8L 的UASRT程序

[复制链接]
 楼主| jiweili010 发表于 2011-3-24 08:38 | 显示全部楼层 |阅读模式
希望给个,用中断的收发程序,并且希望不是用他给的库函数的,自己写的
请帮助,我拿来参考一下,我是个小菜鸟,哪位大侠有时间帮我一下
airwill 发表于 2011-3-24 09:29 | 显示全部楼层
奇怪, 为什么抵制库函数和里面的例子呢?
难道它写得不够规范, 可读性不好?
要善于学习人家的好的东西哦.
香水城 发表于 2011-3-24 10:36 | 显示全部楼层
库函数就是为了帮助初学者快速上手,如果想抛开库函数也就是说你已经不是初学者,不是菜鸟了。

不要还没有学会走路,就想学跑。
ST_ARM 发表于 2011-3-24 10:58 | 显示全部楼层
/*------------------------------------------------------------------------------*/
/* ROUTINE NAME: USART1_Init                                                                                                        */
/* INPUT/OUTPUT: None.                                                                                                                        */
/* DESCRIPTION:  Initialize the UART2.                                                                                        */
/*------------------------------------------------------------------------------*/
void USART1_Init(void)
{
        PC_DDR &= (unsigned char)(~0x0C);
        PC_CR1 |= 0x0C;
        PC_CR2 &= (unsigned char)(~0x0C);        // Set PC2 for RX, PC3 for TX as Pull up Input without interrupt


        CLK_PCKENR1 |= 0x20;        // Enable UART1 clock

        SYSCFG_RMPCR1 = 0x00;        // RX and TX remap

        USART1_CR1 = 0x00;        // Set word length bit[5:4] --- 8 bit : 0x00

        USART1_CR3 = 0x00;        // Set the STOP bits
                                // bit 5:4 -   1 bit = 0x00
                                //         0.5 bit = 0x10
                                //           2 bit = 0x20
                                //         1.5 bit = 0x30

        USART1_BRR2 = 0x01;
        USART1_BRR1 = 0x34;// Set the UART1 BRR1 and BRR2 according to UART1_BaudRate value:
                                // 8000000 /   9600 = 0 34 1 H
                                // 8000000 /  19200 = 0 1A 1 H
                                // 8000000 /  38400 = 0 0D 0 H
//        USART1_BRR2 = 0x0B;
//        USART1_BRR1 = 0x08;// Set the UART1 BRR1 and BRR2 according to UART1_BaudRate value:
                        // 8000000 /  57600 = 0 08 B H
                        // 8000000 / 115200 = 0 04 5 H

        USART1_CR2 = 0x0C;        // Enable Transmit and Receive
        USART1_CR2 |= 0x20;        // Enable Receive interrupt
}

/*----------------------------------------------------------------------------
ROUTINE        : USART1_RX_IRQHandler
Discrept: USART1 Receive interrupt function
----------------------------------------------------------------------------*/
@far @interrupt void URX_IRQHandler(void)
{
        RxBuffer[i_UART ++] = USART1_DR;
}
 楼主| jiweili010 发表于 2011-3-24 13:07 | 显示全部楼层
谢谢各位的帮助,也谢谢版主的批评,我是在改别人的东西,因为人家用的不是库函数,它是一个产品,通信只是其中的一部分,我想把库函数包含进去,再调用。可是我弄不好,有问题,我又解决不了,所以就想按人家原来的思路弄一下的,我也太懂才出来问的
 楼主| jiweili010 发表于 2011-3-24 13:08 | 显示全部楼层
对不起,打错字了,是我不太懂,不好意思
hsbjb 发表于 2011-3-24 15:52 | 显示全部楼层
楼主可以先参考一下库函数
 楼主| jiweili010 发表于 2011-3-24 16:50 | 显示全部楼层
谢谢你的回复,我已经看了它的库函数,他初始化的设置,还有中断里怎么操作,比如说读数据,清标志位什么的,我差不多都懂得,然后我自己写的,按照他的那种步骤,就是不好用
现在不会进接收中断的,可以进发送中断,但是发回的数据不对,我因为本身就不太懂,所以搞得自己一头雾水,想把库加进去直接用,可是头文件有错误,不是没包含这个,就是找不到另一个头文件,我就更懵了
无冕之王 发表于 2011-3-25 16:38 | 显示全部楼层
刚开始学都有一头雾水的阶段
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

23

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部