找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[NANO] nano130串口疑问

[复制链接]
跳转到指定楼层
楼主
feiante 发表于 2014-6-11 09:13:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是第一次使用新唐片子,高手不要吐糟哦。
我在使用简单的uart实验,主程序中配置串口,然后使能中断。
主程序如下:
int main (void)
{
    SystemInit();
                           
        GPIO_Open(GPIOE, GPIO_PMD_PMD6_OUTPUT, GPIO_PMD_PMD6_MASK);

        exti_Init();
        UART0_Init(115200);
        printf(" UART function test \n");
    while(1)
    {
               
        }
}

串口初始化如下:
void UART0_Init(uint32_t BaudRate)
{
        STR_UART_T sParam;
        
        SYS_SelectIPClockSource_1(CLK_CLKSEL1_UART_MASK, CLK_CLKSEL1_UART_HXT); /* 串口时钟为HCLK */
    MFP_UART0_TO_PORTB();        /* 设置PB0/PB1为UART接口 */

    sParam.u32BaudRate = BaudRate;
        sParam.u32cDataBits = DRVUART_DATABITS_8;
    sParam.u32cStopBits = DRVUART_STOPBITS_1;
        sParam.u32cParity = DRVUART_PARITY_NONE;
        sParam.u32cRxTriggerLevel = DRVUART_FIFO_1BYTES;
        sParam.u8EnableDiv16 = DISABLE;
    UART_Init(UART0,&sParam);        
        /* 使能相应的中断 */
        UART_EnableInt(UART0,( DRVUART_THREINT | DRVUART_RDAINT));        
}
现在的情况是:串口能够进入中断,也能输出东西,但是我理解的是UART_EnableInt(UART0,( DRVUART_THREINT | DRVUART_RDAINT));只是使能串口中断,应该不会影响到主程序中断printf函数,也就是说程序执行完串口初始化后应该执行printf函数(如果没有发生串口中断。)然后进入while中等待中断。可是实际下来printf没有执行,如果把UART_EnableInt 屏蔽了就可以执行。
是不是我的理解不对呢?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

沙发
a_ziliu 发表于 2014-6-11 14:13:51 | 只看该作者
請試加上換行符號。
printf(" UART function test \n\r");
回复 支持 反对

使用道具 举报

板凳
 楼主| feiante 发表于 2014-6-12 08:28:58 | 只看该作者
试了一下,还是不行
回复 支持 反对

使用道具 举报

地板
a_ziliu 发表于 2014-6-13 11:06:24 | 只看该作者
Nano100BSeriesBSP_CMSIS_V1.00.005 - UART.zip (459.38 KB, 下载次数: 1739)
我測試是正常的。


回复 支持 反对

使用道具 举报

5#
 楼主| feiante 发表于 2014-6-13 11:28:11 | 只看该作者
a_ziliu 发表于 2014-6-13 11:06
我測試是正常的。

你好,你测试过例子中的SPI和I2C吗?我测试是错误的,用逻辑分析仪没有抓到波形。
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU