在P8Xc591中5个特殊功能寄存器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在P8Xc591中5个特殊功能寄存器.doc

在P8Xc591中5个特殊功能寄存器 CAN 初始化的C 代码示例 void init_can_controller void /* 进入CAN控制器复位模式 */ CANMOD 0x01; /* 将CAN控制器设置为复位模式以启动初始化 */ /* TXDC Port P1.1 配置 */ /* 管脚TXDC 设置为推挽模式 */ P1M2 P1M2 | 0x02; /* P1M2.1 ’1’, P1M1.1 ’0’ 默认 */ /* 配置与CAN有关的中断 */ CANSTA 0x03; /* 使能接收和发送中断 */ /* CAN位定时的配置 */ CANADR BTR0; /* BTR0和BTR1编程为125 kbit/s @12 MHz */ CANDAT 0x45; CANADR BTR1; /* TSEG1 12, TSEG2 3, SJW 2 */ CANDAT 0x2B; /* Samples 1 - sample point ~81 % */ /* 验收滤波器的配置 Bank1的滤波器1配置为接收ID 010.0000.0XXX */ CANADR ACR10; /* 将地址设置到验收代码寄存器0 Bank 1 */ CANDAT 0x40; /* 验收代码0用于滤波 */ CANADR AMR10; /* 将地址设置到验收屏蔽寄存器0 Bank 1 */ CANDAT 0x00; /* bank1: 验收屏蔽0 */ CANDAT 0xFF; /* bank1: 验收屏蔽1无关 */ CANDAT 0xFF; /* bank1: 验收屏蔽2无关 */ CANDAT 0xFF; /* bank1: 验收屏蔽3无关 */ CANADR ACFMOD; /* 将地址设置到ACF模式寄存器 */ CANDAT 0x55; /* 单验收滤波器使用11位ID SFF */ CANADR ACFPRIO; /* 将地址设置到ACF优先级寄存器 */ CANDAT 0xFF; /* 所有滤波器都为高优先级 */ CANADR ACFEN; /* 将地址设置到ACF使能寄存器 */ CANDAT 0x01; /* 使能Bank1的验收滤波器 */ /* 选择操作模式退出CAN控制器复位模式 */ CANMOD 0x00; /* 使CAN控制器进入操作模式 */ 初始化部分的原程序如下: #include d ini_can_controller void CANMOD 0x01; /*进入复位模式,启动CAN初始化*/ P1M2 P1M2 I 0x02; /*管脚TXDC设置为推挽模式*/ CANSTA 0x03; /*使能接收和发送中断*/ CANADR BTR0; /*BTR0和BTR1编程为125kbit/s@12MHz*/ CANDAT 0x45; CANADR BTR1; /*TSEG1 12, TSEG2 3, SJW 2*/ CANDAT 0x2B; /*用户可根据具体的CAN网络来调整BTR0, BRT1的参数*/ CANADR AMR10; /*设定接收屏蔽寄存器的地址*/ CANDAT 0xFF; /*Bank1: 与接收屏蔽寄存器1无关,允许任何数据通过滤波器*/ CANDAT 0xFF; /*Bank1: 与接收屏蔽寄存器2无关,允许任何数据通过滤波器*/ CANDAT 0xFF; /*Bank1: 与接收屏蔽寄存器3无关,允许任何数据通过滤波器*/ CANDAT 0xFF; /*Bank1: 与接收屏蔽寄存器4无关,允许任何数据通过滤波器*/ CANADR ACFMODE; /*设定接收滤波器模式寄存器的地址*/ CANDAT 0x01; /*设定BANK1为单滤波模式,标准帧*/ CANADR ACFENA; /*设定接收滤波器使能寄存器的地址*/ CANDAT 0x01; /*使能BANK1的滤波器1*/ CANMOD 0x00; /*请求进入CAN的激活模式*/ while CANSTA 0x80 ; /*等待总线激活*/

文档评论(0)

suijiazhuang1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档