0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【Ubuntu VSCODE+GCC】CW32L031實(shí)現(xiàn)printf工程

華仔的編程隨筆 ? 來源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-06-28 17:07 ? 次閱讀

【Ubuntu VSCODE+GCC】CW32L031實(shí)現(xiàn)printf工程

一、工程包準(zhǔn)備

我到時(shí)會(huì)把包附在后面。

二、在ubuntu下面新建一個(gè)目錄cw32l031_uart,把工程包拷進(jìn)這個(gè)目錄,同時(shí)賦于文件所有的讀寫權(quán)限:chmod 777 -R ./CW32l031_GCC

三、用vscode打開CW32l031_GCC文件夾,并把文件夾添加到工種區(qū)。

四、在Core目錄下面新建User文件夾,文件夾下新建user_uart.c/user_uar.h。同時(shí)賦予User及以下的包的有文件的讀寫權(quán)限。目錄結(jié)構(gòu)如下:

image.png

五、借鑒官方示例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];



// 調(diào)試串口使用UART1

//  PA8- >TX

//  PA9< -RX

// 時(shí)鐘使能

__RCC_GPIOA_CLK_ENABLE();

__RCC_UART1_CLK_ENABLE();



// 先設(shè)置UART TX RX 復(fù)用,后設(shè)置GPIO的屬性,避免口線上出現(xiàn)毛刺

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函數(shù)重定向,在gcc工程下面編譯是不會(huì)報(bào)錯(cuò),但是是不會(huì)向串口輸出的,所以要修改_write函數(shù)。

六、添加User目錄到Core.mk中:

image.png

七、編譯與下載,我們執(zhí)行make flash就可實(shí)現(xiàn)工程編譯與下載:

image.png

八、效果展示:

PA8PA9分別接到USB轉(zhuǎn)TTL,打開串口調(diào)度助手,就可以實(shí)現(xiàn)hello cw32l031的歡迎信息了:

image.png

【小結(jié)】使用ubuntu下的vscode+gcc進(jìn)行CW32L031開發(fā),相比MDK\\IAR,是一款免費(fèi)的開發(fā)板工具,同時(shí)相比MDK編譯等速度上又有質(zhì)的飛躍!

附工程包:

*附件:cw32l031_gcc.zip

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1199

    瀏覽量

    100829
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    553

    瀏覽量

    29301
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    646

    瀏覽量

    32671
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    13564
收藏 人收藏

    評論

    相關(guān)推薦

    創(chuàng)建CW32L083GCC工程模板

    首創(chuàng)武漢芯源CW32L083GCC工程模版,解決官方?jīng)]有提供的用于linux、macOs下的開發(fā)難題。
    的頭像 發(fā)表于 06-20 09:03 ?1862次閱讀

    首創(chuàng)ubuntucw32l031vscode+gcc工程創(chuàng)建、下載、調(diào)試

    首創(chuàng)在ubuntu下面用vscode實(shí)現(xiàn)cw32l031gcc工程創(chuàng)建、編譯、下載與調(diào)試
    的頭像 發(fā)表于 06-25 21:49 ?2.4w次閱讀
    首創(chuàng)<b class='flag-5'>ubuntu</b>下<b class='flag-5'>cw32l031</b>的<b class='flag-5'>vscode+gcc</b><b class='flag-5'>工程</b>創(chuàng)建、下載、調(diào)試

    CW32 搭建VSCODE+GCC交叉編譯環(huán)境

    在win10下面創(chuàng)建vscode+gcc開發(fā)武漢芯源CW32L系列MCU的編譯環(huán)境
    的頭像 發(fā)表于 06-28 17:02 ?2.5w次閱讀
    <b class='flag-5'>CW</b>32 搭建<b class='flag-5'>VSCODE+GCC</b>交叉編譯環(huán)境

    Ubuntu VSCODE+GCCCW32L031實(shí)現(xiàn)UART控制LED

    ubuntu系統(tǒng)下面使用vscode 使用串口驅(qū)動(dòng)實(shí)現(xiàn)對板載LED燈的控制。
    的頭像 發(fā)表于 06-28 17:10 ?720次閱讀
    【<b class='flag-5'>Ubuntu</b> <b class='flag-5'>VSCODE+GCC</b>】<b class='flag-5'>CW32L031</b><b class='flag-5'>實(shí)現(xiàn)</b>UART控制LED

    Ubuntu VSCODE+GCCCW32L031驅(qū)動(dòng)sht30

    CW32L031ubuntu下面,使用VSCODE+gcc實(shí)現(xiàn)對sht30溫濕計(jì)的驅(qū)動(dòng)
    的頭像 發(fā)表于 06-28 17:12 ?2.4w次閱讀
    <b class='flag-5'>Ubuntu</b> <b class='flag-5'>VSCODE+GCC</b>】<b class='flag-5'>CW32L031</b>驅(qū)動(dòng)sht30

    武漢芯源CW32L031實(shí)現(xiàn)超遠(yuǎn)距離超低耗無線采集

    武漢芯源的CW32L031實(shí)現(xiàn)超低功耗無線溫濕度采集,可實(shí)現(xiàn)在電池供電下,十年的工作時(shí)間。
    的頭像 發(fā)表于 06-30 16:03 ?2.2w次閱讀
    武漢芯源<b class='flag-5'>CW32L031</b><b class='flag-5'>實(shí)現(xiàn)</b>超遠(yuǎn)距離超低耗無線采集

    【產(chǎn)品介紹】32位低功耗MCU CW32L031系列產(chǎn)品介紹

    指南和購買渠道主流開發(fā)設(shè)計(jì)工具和編程器廠家已實(shí)現(xiàn)CW32L031系列的支持。同時(shí)還有配套的開發(fā)工具,用于CW32L031系列MCU的評估。CW32L031CxTx StartKit
    發(fā)表于 09-16 10:30

    首創(chuàng)CW32L083GCC工程模版

    的啟動(dòng)文件跟LD應(yīng)該可以相互借鑒。所以償試修改CW32F030的工程實(shí)現(xiàn)GCC工程。 【實(shí)現(xiàn)
    發(fā)表于 06-19 22:17

    ubuntu下面用vscdoe實(shí)現(xiàn)CW32L031工程創(chuàng)建、編譯、下載與調(diào)試

    目前官方提供CW32L083只提供了MDK、IAR下的固件庫、啟動(dòng)文件。我有過成功CW32L083的項(xiàng)目移植的經(jīng)驗(yàn),現(xiàn)在成功的把CW32L031工程移植到
    發(fā)表于 06-25 21:13

    CW32L031產(chǎn)品介紹

    CW32L031是一款基于eFlash的單芯片低功耗微控制器,集成了ARM?Cortex?-M0+ 核心,主頻高達(dá)48MHz,高速嵌入式存儲(chǔ)器(高達(dá)64KB的FLASH和 高達(dá)8K字節(jié)的SRAM
    發(fā)表于 09-14 06:02

    CW32L031微控制器數(shù)據(jù)手冊

    CW32L031 是基于 eFlash 的單芯片低功耗微控制器,集成了主頻高達(dá) 48MHz 的 ARM? Cortex?-M0+ 內(nèi)核、高速嵌入式存儲(chǔ)器(多至 64K 字節(jié) FLASH 和多至 8K
    發(fā)表于 09-14 08:26

    CW32L031用戶手冊

    CW32L031核心是32位ARM?Cortex?-M0+微處理器,最大尋址空間為4GB。芯片的內(nèi)置程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、外圍設(shè)備和端口寄存器是統(tǒng)一的在相同的4GB線性地址空間中尋址。 內(nèi)存中
    發(fā)表于 09-14 07:09

    CW32L031微處理器用戶手冊

    CW32L031 在使用中需要注意如下事項(xiàng):?FLASH、SRAM 以及 GPIOx_ODR、CRC_DR 等少數(shù)寄存器支持 8bit/16bit/32bit 訪問方式,其它外設(shè)只支持32bit
    發(fā)表于 09-14 07:12

    CW32L031 StartKit軟件包

    CW32L031 StartKit 軟件包
    發(fā)表于 09-15 07:58

    【產(chǎn)品介紹】32位低功耗MCU CW32L031系列產(chǎn)品介紹

    Cortex-M0+低功耗MCUCW32L031系列型號展示武漢芯源半導(dǎo)體32位低功耗CW32L031系列集成了主頻可達(dá)48MHz的ARMCortex?-M0+內(nèi)核,最大64K字節(jié)FLASH、最大
    的頭像 發(fā)表于 09-16 10:42 ?1294次閱讀
    【產(chǎn)品介紹】32位低功耗MCU <b class='flag-5'>CW32L031</b>系列產(chǎn)品介紹