【前言】
武汉沁源原来出款了一款饭盒派开发板,原来是适配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也是实现的闪烁。

我要赚赏金
