打印
[技术问答]

M0516怎样设置串口接收中断啊?

[复制链接]
2914|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
frank303|  楼主 | 2014-9-24 23:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:L今天买了一块M051的开发板,下载个UART程序到板上,用串口工具发送命令却无法接收到。
请各位同志帮下忙吧。
一下是例程,看看有什么不对:
#include "SmartM_M0.h"

/****************************************
*函数名称:UartInit
*输    入:unFosc          晶振频率
          unBaud         波特率
*输    出:无
*功    能:串口初始化
******************************************/
VOID UartInit(UINT32 unFosc,UINT32 unBaud)
{
    P3_MFP &= ~(P31_TXD0 | P30_RXD0);   
    P3_MFP |= (TXD0 | RXD0);                    //P3.0 使能为串口0接收
                                                                                //P3.1 使能为串口0发送

    UART0_Clock_EN;         //串口0时钟使能
    UARTClkSource_ex12MHZ;  //串口时钟选择为外部晶振
    CLKDIV &= ~(15<<8);         //串口时钟分频为0


    IPRSTC2 |= UART0_RST;   //复位串口0
    IPRSTC2 &= ~UART0_RST;  //复位结束
    UA0_FCR |= TX_RST;      //发送FIFO复位
    UA0_FCR |= RX_RST;      //接收FIFO复位


    UA0_LCR &= ~PBE;             //校验位功能取消
        UA0_LCR &= ~WLS;
    UA0_LCR |= WL_8BIT;     //8位数据位
    UA0_LCR &= NSB_ONE;     //1位停止位


    UA0_BAUD |= DIV_X_EN|DIV_X_ONE;   //设置波特率分频

    UA0_BAUD |= ((unFosc / unBaud) -2);        //波特率设置  UART_CLK/(A+2) = 115200, UART_CLK=12MHz

        UA0_IER        |= RDA_IEN;                                        //接收数据中断使能

        NVIC_ISER |= UART0_INT;                                 //使能串口0中断
}

/****************************************
*函数名称:UartSend
*输    入:pBuf                          发送数据缓冲区
          unNumOfBytes         发送字节总数
*输    出:无
*功    能:串口发送数据
******************************************/
VOID UartSend(UINT8 *pBuf,UINT32 unNumOfBytes)
{
         UINT32 i;

         for(i=0; i<unNumOfBytes; i++)
         {
         UA0_THR = *(pBuf+i);

         while ((UA0_FSR&TX_EMPTY) == 0x00); //检查发送FIFO是否为空         
         }
}

/****************************************
*函数名称:main
*输    入:无
*输    出:无
*功    能:函数主体
******************************************/
INT32 main(VOID)
{
     PROTECT_REG
         (                                                                                                //ISP下载时保护FLASH存储器
                 PWRCON |= XTL12M_EN;                                                //默认时钟源为外部晶振
                 while((CLKSTATUS & XTL12M_STB) == 0);                 //等待12MHz时钟稳定       
               
                 CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M;        //设置外部晶振为系统时钟         
         
         )                                                               

         UartInit(12000000,9600);                                                //波特率设置为9600bps

         while(1);
}

/****************************************
*函数名称:UART0_IRQHandler
*输    入:无
*输    出:无
*功    能:串口0中断服务函数
******************************************/
VOID UART0_IRQHandler(VOID)
{
    UINT8 ucData;

        if(UA0_ISR & RDA_INT)                                 //检查是否接收数据中断
        {               
                while(UA0_ISR & RDA_IF)                  //获取所有接收到的数据
                {
                        ucData = UA0_RBR;                         //读取数据
                       
                        UartSend(&ucData,1);                 //发送数据
                        if(0x33==ucData)
                        {
                           P2_PMD=0x5555;                           //GPIO设置为输出模式
                                                                               
                        P2_DOUT &= ~0x01;                 //点亮LED灯
                                                                              //延时500ms
                    }
                       
                }
        }

}

沙发
gaoyang9992006| | 2014-9-25 18:48 | 只看该作者
uint32_t DrvUART_IsIntEnabled  ( E_UART_PORT  u32Port,   uint32_t  u32InterruptFlag   )  


例程都没法用吗?是不是型号搞错了,我上面这句是#include "M051Series.h"好像是058的。

使用特权

评论回复
板凳
gaoyang9992006| | 2014-9-25 18:50 | 只看该作者
新唐都开始提供库函数了,那个应该很好用。过几天我试试,最近忙其他项目,弄不完,不让十一回家了。

使用特权

评论回复
地板
frank303|  楼主 | 2014-9-25 19:26 | 只看该作者
gaoyang9992006 发表于 2014-9-25 18:50
新唐都开始提供库函数了,那个应该很好用。过几天我试试,最近忙其他项目,弄不完,不让十一回家了。 ...

我安装了几个库文件就是不知道怎么弄,哎。我一介小白请多指教。有没有学习这款芯片的论坛呢?

使用特权

评论回复
5
frank303|  楼主 | 2014-9-25 20:24 | 只看该作者
gaoyang9992006 发表于 2014-9-25 18:50
新唐都开始提供库函数了,那个应该很好用。过几天我试试,最近忙其他项目,弄不完,不让十一回家了。 ...

那个,谢谢你了。我的芯片是M0516LCN,不知道有没有影响

使用特权

评论回复
6
haolaishi| | 2014-9-26 17:53 | 只看该作者
头文件就不对,汗。。。你复制的是Smart板子的例程吧,哈哈,用官网的例程

使用特权

评论回复
7
niuyaliang| | 2014-9-27 15:25 | 只看该作者
买板子不提供例程的么?

使用特权

评论回复
8
frank303|  楼主 | 2014-9-28 08:02 | 只看该作者
niuyaliang 发表于 2014-9-27 15:25
买板子不提供例程的么?

已解决。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

67

帖子

1

粉丝