感谢发烧友论坛和正点原子提供的测评机会。此次提供的STM32F1战舰板资源十分丰富,串口、SD卡、大容量FLASH,音频播放、网络接口等外设一应俱全。
拿到开发板,首先添加RTOS,IO操作管理和串口调试接口,为后续测试搭建基本环境。
1、RTOS采用RTX,源码可以在KEIL安装目录下获取,官方已经适配了cortex-M各个系列内核,选择合适的文件即可,详见附件工程。
2、IO配置:创建一个IO配置列表如下结构,后续新增IO是只需要添加到列表即可。
typedef const struct
{
GPIO_TypeDef *port;
uint32_t mode;
uint32_t pull;
uint32_t speed;
uint32_t val_init;
uint32_t pin;
} gpio_init_cfg_type;
/*******************************************************************************
* [url=home.php?mod=space&uid=2666770]@Brief[/url] gpio cfg list
*******************************************************************************/
static gpio_init_cfg_type gpio_cfg[] = {
// LED
{GPIOB, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, 1, GPIO_PIN_5},
{GPIOE, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, 1, GPIO_PIN_5},
// KEY
{GPIOE, GPIO_MODE_INPUT, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, 1, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4},
{GPIOA, GPIO_MODE_INPUT, GPIO_PULLDOWN, GPIO_SPEED_FREQ_LOW, 1, GPIO_PIN_0},
};
/*******************************************************************************
* @brief bsp_gpio_init
* \param[in] us delay
* \retval: none
*******************************************************************************/
void bsp_gpio_init(void)
{
int index;
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_RCC_GPIOG_CLK_ENABLE();
/*gpio cfg*/
for (index = 0; index < sizeof(gpio_cfg) / sizeof(gpio_init_cfg_type); index++)
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = gpio_cfg[index].pin;
GPIO_InitStruct.Mode = gpio_cfg[index].mode;
GPIO_InitStruct.Pull = gpio_cfg[index].pull;
GPIO_InitStruct.Speed = gpio_cfg[index].speed;
HAL_GPIO_Init(gpio_cfg[index].port, &GPIO_InitStruct);
if ((gpio_cfg[index].mode == GPIO_MODE_OUTPUT_PP) || (gpio_cfg[index].mode == GPIO_MODE_OUTPUT_OD))
{
if (gpio_cfg[index].val_init)
{
HAL_GPIO_WritePin(gpio_cfg[index].port, gpio_cfg[index].pin, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(gpio_cfg[index].port, gpio_cfg[index].pin, GPIO_PIN_RESET);
}
}
}
}
3、调试接口:使用usart1作为调试串口,该串口连接至板载USB串口,可以方便电脑端交换调试。程序添加了简易的SHELL命令系统,可以添加调试命令,测试程序现添加的指令如下图所示。可以使用shell -H指令查看系统当前支持的命令。
代码托管于GITEE:
https://gitee.com/aple_sun/opendev-f1-v4.git