【Ubuntu VSCODE+GCC】CW32L031实现printf工程

【ubuntu vscode+gcc】cw32l031实现printf工程
一、工程包准备
我到时会把包附在后面。
二、在ubuntu下面新建一个目录cw32l031_uart,把工程包拷进这个目录,同时赋于文件所有的读写权限:chmod 777 -r ./cw32l031_gcc
三、用vscode打开cw32l031_gcc文件夹,并把文件夹添加到工种区。
四、在core目录下面新建user文件夹,文件夹下新建user_uart.c/user_uar.h。同时赋予user及以下的包的有文件的读写权限。目录结构如下:
五、借鉴官方示例log,编写user_uart.c如下:
#include user_uart.h
static void serialinit(uint32_t baudrate);
static void serialsend(uint8_t data);
static uint8_t const pow2_table[] = {0, 1, 2, 3, 4, 5, 6, 7};
void loginit(void)
{
serialinit(log_serial_bps);}
static void serialinit(uint32_t baudrate)
{
uint32_t pclk_freq;gpio_inittypedef gpio_initstructure = {0};usart_inittypedef usart_initstructure = {0};pclk_freq = systemcoreclock > > pow2_table[cw_sysctrl- >cr0_f.hclkprs];pclk_freq > >= pow2_table[cw_sysctrl- >cr0_f.pclkprs];// 调试串口使用uart1// pa8- >tx// pa9< -rx// 时钟使能__rcc_gpioa_clk_enable();__rcc_uart1_clk_enable();// 先设置uart tx rx 复用,后设置gpio的属性,避免口线上出现毛刺pa08_afx_uart1txd();pa09_afx_uart1rxd();gpio_initstructure.pins = gpio_pin_8;gpio_initstructure.mode = gpio_mode_output_pp;gpio_init(cw_gpioa, &gpio_initstructure);gpio_initstructure.pins = gpio_pin_9;gpio_initstructure.mode = gpio_mode_input;gpio_init(cw_gpioa, &gpio_initstructure);usart_initstructure.usart_baudrate = baudrate;usart_initstructure.usart_over = usart_over_16;usart_initstructure.usart_source = usart_source_pclk;usart_initstructure.usart_uclkfreq = pclk_freq;usart_initstructure.usart_startbit = usart_startbit_fe;usart_initstructure.usart_stopbits = usart_stopbits_1;usart_initstructure.usart_parity = usart_parity_no;usart_initstructure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none;usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx;usart_init(cw_uart1, &usart_initstructure);}
static void serialsend(uint8_t data)
{
usart_senddata_8bit(cw_uart1, data);while (usart_getflagstatus(cw_uart1, usart_flag_txe) == reset);}
int _write (int fd, char *pbuffer, int size)
{
for (int i = 0; i < size; i++) { serialsend((uint8_t)pbuffer[i]);} return size;}
【代码解释】在log.c中,我们是基于mdk的printf函数重定向,在gcc工程下面编译是不会报错,但是是不会向串口输出的,所以要修改_write函数。
六、添加user目录到core.mk中:
七、编译与下载,我们执行make flash就可实现工程编译与下载:
八、效果展示:
pa8pa9分别接到usb转ttl,打开串口调度助手,就可以实现hello cw32l031的欢迎信息了:
【小结】使用ubuntu下的vscode+gcc进行cw32l031开发,相比mdk\\iar,是一款免费的开发板工具,同时相比mdk编译等速度上又有质的飞跃!
附工程包:
*附件:cw32l031_gcc.zip


Nubia手机的用户现在可以享受Android的最新系统
如何理解音箱烧高音单元的原因分析
小米米家烟雾报警器开卖 夜里手机充电安枕无忧
新机荣耀20S,将会有哪些亮点呢?
iphone8什么时候上市?确定了!ihone8外观就长这样?终于不用猜了
【Ubuntu VSCODE+GCC】CW32L031实现printf工程
渐开线圆柱齿轮模型模板设计步骤
电感有耐压值吗?
本田广州纯电动汽车工厂已开工建设,投资35亿,预计年产12万辆汽车
索尼推出人工智能辅助音乐制作服务
霉菌毒素测定仪的特点以及技术参数的介绍
区块链技术将在物联网领域引起革命
机器视觉LED光源的十大类型介绍
京瓷开发出智能手机用0.35mm连接器
华为车规芯片麒麟990A架构曝光!
IBM研发新式采光器 太阳能采集效率提高10倍
谐振响应对电路会产生什么影响?
L​​etsGoDigital获得的专利显示了一种带有缺口屏幕的设备
意法半导体:半导体单车总价值约有3到4倍成长空间
物联网和人工智能的集成进行革新 以改善患者的治疗效果