这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【CW32L012】3、最小系统板适配饭盒派,实现printf

共1条 1/1 1 跳转至

【CW32L012】3、最小系统板适配饭盒派,实现printf

高工
2025-11-16 10:22:13     打赏

【前言】

武汉沁源原来出款了一款饭盒派开发板,原来是适配CW32F0xx最小系统板的,我看到这次我拿到的最小系统板也是跟原来的板子是PINtoPIN的,因此准备适配饭合派开发板。

【板级支持包的修改】

1、在cw32l012_startkit.h中定义了LED,KEY,UART的定义,我根据饭盒派的原理图修改如下:

//StartKit硬件资源配置:

/********************* 配置LED端口信息 ****************************************/
#define BSP_LED1_PIN                              GPIO_PIN_13
#define BSP_LED1_PORT                             CW_GPIOC
#define BSP_LED1_PERIPH_CLK_ENABLE()              __SYSCTRL_GPIOC_CLK_ENABLE()
#define BSP_LED1_PERIPH_CLK_DISABLE()             __SYSCTRL_GPIOC_CLK_DISABLE()
#define BSP_LED1_SETHIGH()                        PC13_SETHIGH()
#define BSP_LED1_SETLOW()                         PC13_SETLOW()
#define BSP_LED1_TOG()                            PC13_TOG()

#define BSP_LED2_PIN                              GPIO_PIN_7
#define BSP_LED2_PORT                             CW_GPIOA
#define BSP_LED2_PERIPH_CLK_ENABLE()              __SYSCTRL_GPIOA_CLK_ENABLE()
#define BSP_LED2_PERIPH_CLK_DISABLE()             __SYSCTRL_GPIOA_CLK_DISABLE()
#define BSP_LED2_SETHIGH()                        PA07_SETHIGH()
#define BSP_LED2_SETLOW()                         PA07_SETLOW()
#define BSP_LED2_TOG()                            PA07_TOG()

#define BSP_LED3_PIN                              GPIO_PIN_8
#define BSP_LED3_PORT                             CW_GPIOA
#define BSP_LED3_PERIPH_CLK_ENABLE()              __SYSCTRL_GPIOA_CLK_ENABLE()
#define BSP_LED3_PERIPH_CLK_DISABLE()             __SYSCTRL_GPIOA_CLK_DISABLE()
#define BSP_LED3_SETHIGH()                        PA08_SETHIGH()
#define BSP_LED3_SETLOW()                         PA08_SETLOW()
#define BSP_LED3_TOG()                            PA08_TOG()


/******************* 配置用户按键端口信息 *************************************/
#define BSP_KEY1_PIN                              GPIO_PIN_13
#define BSP_KEY1_PORT                             CW_GPIOB
#define BSP_KEY1_PERIPH_CLK_ENABLE()              __SYSCTRL_GPIOB_CLK_ENABLE()
#define BSP_KEY1_PERIPH_CLK_DISABLE()             __SYSCTRL_GPIOB_CLK_DISABLE()
#define BSP_KEY1_GETVALUE()                       PB13_GETVALUE()
#define BSP_KEY1_IRQn                             GPIOB_IRQn

#define BSP_KEY2_PIN                              GPIO_PIN_14
#define BSP_KEY2_PORT                             CW_GPIOB
#define BSP_KEY2_PERIPH_CLK_ENABLE()              __SYSCTRL_GPIOB_CLK_ENABLE()
#define BSP_KEY2_PERIPH_CLK_DISABLE()             __SYSCTRL_GPIOB_CLK_DISABLE()
#define BSP_KEY2_GETVALUE()                       PB14_GETVALUE()
#define BSP_KEY2_IRQn                             GPIOB_IRQn


#define BSP_KEY3_PIN                              GPIO_PIN_15
#define BSP_KEY3_PORT                             CW_GPIOB
#define BSP_KEY3_PERIPH_CLK_ENABLE()              __SYSCTRL_GPIOB_CLK_ENABLE()
#define BSP_KEY3_PERIPH_CLK_DISABLE()             __SYSCTRL_GPIOB_CLK_DISABLE()
#define BSP_KEY3_GETVALUE()                       PB15_GETVALUE()
#define BSP_KEY3_IRQn                             GPIOB_IRQn

/******************* 配置用于Printf的端口和外设和信息 *************************/
#define BSP_UART_TXD_PIN                         GPIO_PIN_9
#define BSP_UART_TXD_PORT                        CW_GPIOA
#define BSP_UART_TXD_AF()                        PA09_AFx_UART1TXD()
#define BSP_UART_TXD_PORT_PERIPH_CLK_ENABLE()    __SYSCTRL_GPIOA_CLK_ENABLE()
#define BSP_UART_TXD_PORT_PERIPH_CLK_DISABLE()   __SYSCTRL_GPIOA_CLK_DISABLE()

#define BSP_UART_RXD_PIN                         GPIO_PIN_10
#define BSP_UART_RXD_PORT                        CW_GPIOA
#define BSP_UART_RXD_IRQn                        GPIOA_IRQn
#define BSP_UART_RXD_AF()                        PA10_AFx_UART1RXD()
#define BSP_UART_RXD_PORT_PERIPH_CLK_ENABLE()    __SYSCTRL_GPIOA_CLK_ENABLE()
#define BSP_UART_RXD_PORT_PERIPH_CLK_DISABLE()   __SYSCTRL_GPIOA_CLK_DISABLE()

#define BSP_UART                                 CW_UART1
#define BSP_UART_IRQn                            UART1_IRQn
#define BSP_UART_PERIPH_CLK_ENABLE()             __SYSCTRL_UART1_CLK_ENABLE()
#define BSP_UART_PERIPH_CLK_DISABLE()            __SYSCTRL_UART1_CLK_DISABLE()
#define BSP_UART_PERIPH_RST_ENABLE()             __SYSCTRL_UART1_RST_ENABLE()
#define BSP_UART_PERIPH_RST_DISABLE()            __SYSCTRL_UART1_RST_DISABLE()


/******************************************************************************/
/* Global macro function                                                      */
/******************************************************************************/


/******************************************************************************/
/* Exported variables ('extern', definition in C source)                      */
/******************************************************************************/
extern LED_TypeDef LED1, LED2, LED3;
extern KEY_TypeDef KEY1, KEY2, KEY3;

然后在cw32l012_startkit.c中修改并加添一路KEY与LED

#include "cw32l012_startkit.h"

KEY_TypeDef KEY1 = {.Port = BSP_KEY1_PORT, .Pin = BSP_KEY1_PIN};
KEY_TypeDef KEY2 = {.Port = BSP_KEY2_PORT, .Pin = BSP_KEY2_PIN};
KEY_TypeDef KEY3 = {.Port = BSP_KEY3_PORT, .Pin = BSP_KEY3_PIN};
LED_TypeDef LED1 = {.Port = BSP_LED1_PORT, .Pin = BSP_LED1_PIN};
LED_TypeDef LED2 = {.Port = BSP_LED2_PORT, .Pin = BSP_LED2_PIN};
LED_TypeDef LED3 = {.Port = BSP_LED3_PORT, .Pin = BSP_LED3_PIN};

【测试】

在main.c中添加测试代码:

int32_t main(void)
{
		SYSCTRL_HSI_Enable(HSIOSC_TO_HSI96MHZ);
    SYSCTRL_HCLKPRS_Config(SYSCTRL_HCLK_DIV1);
    SYSCTRL_PCLKPRS_Config(SYSCTRL_PCLK_DIV1);
    SYSCTRL_SystemCoreClockUpdate(96000000);
    InitTick(96000000);
	  Bsp_Uart_Init(96000000,115200);
	  printf("start\r\n");
	  Bsp_Led_Init(&LED3);
	  Bsp_Led_Init(&LED1);

    while (1)
    {
			Bsp_Led_Tog(&LED3);
			Bsp_Led_Tog(&LED1);
			SysTickDelay(1000);
    }
}

编译下载好程序,打开串口助手,可以看到成功的实现了printf,以及开发板上的两个LED也是实现的闪烁。

image.png




关键词: CW32L012     printf    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]