You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:CCS环境下PIC18F24J10第二UART引脚重映射报错解决方案

解决PIC18F24J10在CCS环境下UART2引脚重映射配置报错的方案

1. 核心配置前提

  • 先禁用重映射引脚的模拟功能:如果重映射的引脚默认是模拟口,必须通过ADCON1寄存器将其设为数字IO。
  • 配置对应引脚的TRIS状态:UART2的RX引脚设为输入,TX引脚设为输出。

2. UART2引脚重映射的CCS标准代码示例

以下是可直接参考的配置模板,你可以根据实际引脚需求修改:

// 第一步:禁用模拟功能(所有引脚设为数字IO,按需调整)
ADCON1 = 0x0F;

// 第二步:配置UART2 RX引脚重映射(以映射到RB0/RP0为例)
// RPINR19的U2RXP位对应RX的RP引脚编号,0x00对应RP0
RPINR19bits.U2RXP = 0x00;

// 第三步:配置UART2 TX引脚重映射(以映射到RB1/RP1为例)
// RPOR0的RP1R位设为0x04,对应UART2 TX输出
RPOR0bits.RP1R = 0x04;

// 第四步:初始化UART2核心参数
void uart2_init(void) {
    U2MODEbits.UARTEN = 0; // 先关闭UART2模块
    U2BRG = 0x27; // 示例:8MHz时钟下9600波特率的计算值,按需替换
    U2MODEbits.PDSEL = 0; // 8位数据,无校验
    U2MODEbits.STSEL = 0; // 1位停止位
    U2STAbits.UTXEN = 1; // 使能TX输出
    U2MODEbits.UARTEN = 1; // 开启UART2
}

// 别忘了配置TRIS
TRISBbits.TRISB0 = 1; // RB0设为输入(RX)
TRISBbits.TRISB1 = 0; // RB1设为输出(TX)

3. 常见报错排查点

  • 寄存器命名错误:严格对照PIC18F24J10 datasheet,比如RPINR19、U2RXP这类名称不能写错,CCS中位域写法是寄存器名bits.位域,比如RPINR19bits.U2RXP。
  • 引脚对应关系错误:RP编号和物理引脚的对应关系要查 datasheet,比如RB0对应RP0、RB1对应RP1,别搞混。
  • 初始化顺序错误:必须先配置重映射寄存器,再开启UART2模块,否则重映射不生效。
  • 头文件未加载:确认工程中已包含#include <18F24J10.h>,否则CCS无法识别寄存器定义。

4. 针对“未定义标识符”类报错的补充处理

如果报错提示寄存器未定义,检查CCS的编译器设置:

  • 确认工程目标芯片选择的是PIC18F24J10。
  • 若仍有问题,可手动添加寄存器定义(不推荐,优先确保头文件正确加载)。

内容的提问来源于stack exchange,提问作者Yigit Sevindim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:18:26