OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3418|回复: 2

UAFRT2时钟ENABLE问题

[复制链接]

4

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2018-4-17
在线时间
13 小时
发表于 2019-4-10 16:51:39 | 显示全部楼层 |阅读模式
1金钱


在原子哥原先的例程中加入了串口2的初始化函数,成功编译。
但是即使在main函数中没有调用串口2 的初始化函数,程序下到板子里也会造成程序无法运行,代码无法下载。
查了一下资料 发现LPUART_Init 函数会自动调用 CLOCK_EnableClock 函数。但是为什么显示调用这个函数会造成程序卡死。甚至没有调用这个函数,仅仅是编译成功下到板子里都造成了程序卡死

void LPUART2_Init(u32 bound)
{       
        u32 freq=0;                                                        //串口的时钟源频率
       
        //加入下面这行代码,即使没有调用LPUART2_Init函数,程序下到板子里也会造成程序无法运行,代码无法下载
        //CLOCK_EnableClock(kCLOCK_Lpuart2);        //使能LPUART1时钟
       
        CLOCK_SetMux(kCLOCK_UartMux,0);         //设置UART时钟源为PLL3 80Mhz,PLL3/6=480/6=80MHz
    CLOCK_SetDiv(kCLOCK_UartDiv,0);         //设置UART时钟1分频,即UART时钟为80Mhz
       
        //LPUART1所使用的IO功能配置,即:从ALT0~ALT7选择合适的功能。
        IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_02_LPUART2_TX,0U);        //GPIO_AD_B0_12设置为LPUART1_TX
        IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_03_LPUART2_RX,0U);        //GPIO_AD_B0_13设置为LPUART1_RX

        //配置IO引脚GPIO_AD_B0_12和GPIO_AD_B0_13的功能
        //低转换速度,驱动能力为R0/6,速度为100Mhz,关闭开路功能,使能pull/keepr
        //选择keeper功能,下拉100K Ohm,关闭Hyst
        IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_02_LPUART2_TX,0x10B0u);
        IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_03_LPUART2_RX,0x10B0u);

        freq=LPUART_SrcFreqGet();       
       
        LPUART_GetDefaultConfig(&lpuart2_config);                                 //先设置为默认配置,后面在根据实际情况配置
       
        //初始化NXP官方提供的debug console,此函数会重新初始化LPUART1,但是我们后面会
        //重新显示的初始化一次LPUART1,DbgConsole_Init()主要是给那些想要使用NXP官方
        //调试功能的开发者使用的,不需要使用的话就可以将下面代码注释掉
        DbgConsole_Init((uint32_t) LPUART2,bound,DEBUG_CONSOLE_DEVICE_TYPE_LPUART,freq);
       
        lpuart1_config.baudRate_Bps=bound;                                                //波特率
        lpuart1_config.dataBitsCount=kLPUART_EightDataBits;                //8位
        lpuart1_config.stopBitCount=kLPUART_OneStopBit;                        //1位停止位
        lpuart1_config.parityMode=kLPUART_ParityDisabled;                //无奇偶校验
        lpuart1_config.enableRx=true;                                                        //使能接收
        lpuart1_config.enableTx=true;                                                        //使能发送
       
        LPUART_Init(LPUART2,&lpuart2_config,freq);                                //初始化LPUART1

#if EN_LPUART2_RX                                                                                //是否需要开启中断?       
        //LPUART中断设置
        LPUART_EnableInterrupts(LPUART2,kLPUART_RxDataRegFullInterruptEnable); //使能接收中断
        RT1052_NVIC_SetPriority(LPUART2_IRQn,5,0);                                //抢占优先级5,子优先级0
        EnableIRQ(LPUART2_IRQn);                                    //使能LPUART1中断
#endif

}       

7串口通信.zip

1.66 MB, 下载次数: 3

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

308

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2019-3-26
在线时间
9 小时
发表于 2019-4-17 09:13:51 | 显示全部楼层
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2019-2-22
在线时间
3 小时
发表于 2019-5-6 21:35:38 | 显示全部楼层
我也遇到了这种情况。我用的是UART5,程序只要初始化了串口5一定会跑飞。现在只能注释掉串口5的初始化暂时使用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-8 11:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表