查看: 4836|回复: 6

[求助] [Kinetis]KE02的uart0无法发送数据问题

[复制链接]

该用户从未签到

2

主题

4

帖子

0

新手上路

Rank: 1

积分
24
最后登录
2017-1-9
发表于 2017-1-6 13:55:02 | 显示全部楼层 |阅读模式
4NXP金币

使用KE02-SC例程中的程序修改,使用的芯片是ke02z64,开发环境为IAR。将原来的uart1改为uart0,uart0能收到数据,但是要用printf发送数据的时候,
程序卡在while (!(pUART->S1 & UART_S1_TDRE_MASK));那一句话上。
void UART_PutChar(UART_Type *pUART, uint8_t u8Char)
{   
    /* Wait until space is available in the FIFO */
    while (!(pUART->S1 & UART_S1_TDRE_MASK));
   
    /* Send the character */
    pUART->D = (uint8_t)u8Char;
}

回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24866
最后登录
2025-7-18
发表于 2017-1-6 14:49:39 | 显示全部楼层
先介绍一下,你都改了那些地方吧?
回复

使用道具 举报

该用户从未签到

2

主题

4

帖子

0

新手上路

Rank: 1

积分
24
最后登录
2017-1-9
 楼主| 发表于 2017-1-6 15:05:49 | 显示全部楼层
小恩GG 发表于 2017-1-6 14:49
先介绍一下,你都改了那些地方吧?

KE02_Config.h文件下的
#define TERM_PORT   UART0               /*!< UART0 is used on KE02 EVB board */
原来是UART1改为UART0

主函数里边,原来所有的UART1改成UART0
   sConfig.u32SysClkHz = BUS_CLK_HZ;   /* 串口时钟选择 */
    sConfig.u32Baudrate = UART_9600_BITRATE; /* 波特率9600 */
    UART_Init(TERM_PORT,&sConfig);
    UART0->C2 |= UART_C2_RIE_MASK; /* 使能接收中断 */
    NVIC_EnableIRQ(UART0_IRQn); /* 使能串口0中断函数*/

修改SIM.C文件下的void SIM_Init(SIM_ConfigType *pConfig)函数,修改UART0的输出脚
    u32PinSel = pConfig->u32PinSel|SIM_PINSEL_UART0PS_MASK;/* 切换uart输出口 */
回复

使用道具 举报

该用户从未签到

2

主题

4

帖子

0

新手上路

Rank: 1

积分
24
最后登录
2017-1-9
 楼主| 发表于 2017-1-8 10:57:57 | 显示全部楼层
,都没人么
回复

使用道具 举报

该用户从未签到

16

主题

199

帖子

2

中级会员

Rank: 3Rank: 3

积分
443
最后登录
2019-12-24
发表于 2017-1-8 20:40:02 | 显示全部楼层

问题1,
KE02_Config.h文件下的
#define TERM_PORT   UART0               /*!< UART0 is used on KE02 EVB board */
原来是UART1改为UART0
再在#define波特率那里设为 9600 就可以了,不用改主函数的。

问题2,
这个问题以前论坛已讨论过了,uart0定义在PTA2,PTA3,作为UART0时,输出能力非常小,应外加2.7K到4.7K上拉,楼主试试看。
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24866
最后登录
2025-7-18
发表于 2017-1-9 09:47:12 | 显示全部楼层
吴山火 发表于 2017-1-6 15:05
KE02_Config.h文件下的
#define TERM_PORT   UART0               /*!< UART0 is used on KE02 EVB boar ...

咱们首先确认一下,在KE02-SC包中,在sysinit.c中的UART_InitPrint()里,其实只需要修改TERM_PORT就可以了,不需要做额外的修改的
void UART_InitPrint(void)
{
    UART_init (TERM_PORT, BUS_CLK_HZ/1000, UART_PRINT_BITRATE);
}

至于4楼小伙伴给的建议,楼主也要参考一下
回复

使用道具 举报

该用户从未签到

12

主题

69

帖子

0

中级会员

Rank: 3Rank: 3

积分
244
最后登录
2018-4-2
发表于 2017-3-3 15:13:53 | 显示全部楼层
楼主你的问题解决了吗?我也遇到了类似的问题
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 09:00 , Processed in 0.093100 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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