CH55x在linux的C开发环境建立

安装sdcc编译器
  • ubuntu下可以直接sudo apt install sdcc*安装,版本是3.8.0
  • 也可在sdcc下载最新版本安装,版本是3.9.0
安装isp写入工具
  • librech551支持usb写入
  • ch552isptool 支持usb写入(仅支持bootloader version >= 2.30)
  • wchprog支持usb写入(仅支持bootloader version<2.30)
增加usb权限

为了普通用户也能使用usb写入,可以新建个rules文件修改usb权限
sudo vi /etc/udev/rules.d/99-wchisp.rules
文件内容如下:

ATTRS{idVendor}=="4348", ATTRS{idProduct}=="55e0", MODE="0666"

使规则生效:

sudo udevadm control --reload-rules
sudo udevadm trigger
下载头文件与示例

官方提供的示例是在keil c51环境下使用的,在sdcc编译通不过.可以使用第三方库

  • ch554_sdcc包含了头文件与示例,可适用于ch551,ch552,ch554
编译与烧写
参考示例,写个Makefile,示例如:
TARGET = example

C_FILES = \
        main.c \
    	../../include/debug.c

include ../Makefile.include
可自定义的构建配置变量:
  • TARGET 目标名称
  • C_FILES 可包含的多个C文件
  • FREQ_SYS 系统主频,默认16000000,可修改为12000000,24000000等
  • XRAM_SIZE 对应sdcc命令参数–xram-size,默认0x0400
  • XRAM_LOC 对应sdcc命令参数–xram-loc,默认0
  • CODE_SIZE 对应sdcc命令参数–code-size,默认0x2800
  • EXTRA_FLAGS 添加更多sdcc的编译参数,如 --opt-code-speed,–debug等
  • 执行make编译,成功时会自动生成hex和bin文件
  • 执行make flash会调用LibreCH551将程序下载到目标板
移植keil c51的源码到sdcc

如有必要移植keil c51的源码到sdcc,可以先查看sdcc手册了解其语法.主要针对C扩展部分的语法不同

  • 部分关键字需使用双下划线,如:__bit, __sfr, __sbit, __code, __xdata, __data, __using, __at等
  • 寄存器定义
    示例:
    • __sbit __at(addr+bit) name
    • __sfr __at(addr) name
  • 中断定义
    示例:
    • void interrupt_id (void) __interrupt(interrupt_num) __using(bank_num)
  • 绝对地址定义
    示例:
    • __xdata unsigned char __at(addr) name
  • 内嵌汇编
    示例:
    • 旧式写法:__asm NOP __endasm
    • 新式式写法: __asm__ (“NOP”)

可以在代码#include <compiler.h>这个头文件,使用SBIT ,SFR,INTERRUPT,INTERRUPT_USING等这些宏来自动适配不同的编译器.

其它
  • 波特率选择

如果使用 USB 模块,那么 Fusb4x 必须是 48MHz;并且在用全速 USB 时,系统主频 Fsys 不低于
6MHz;在用低速 USB 时,系统主频 Fsys 不低于 1.5MHz。

当需要用到USB模块时,主频只有几种可以选择.串口的波特率通信要求误差小于2%.当 U1SMOD=1 时,波特率如下表,如需要使用较高波特率通信,主频最好为24MHz.
不同波特率误差值

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值