1月12日意法半导体全新发布了一款32位MCU-STM32C0,用于经济高效应用的入门级32位MCU,STM32C0为8位/16位典型应用而生。STM32C0系列外设简单,经济适用;与市场上同类产品相比,STM32C0具有更强大的性能、质量可靠性和稳定性,具有STM32庞大成熟的生态系统,是实现8位/16位典型应用的完美之选。
上周收到Nucleo-C031C6板卡了,外包装采用纸盒封装,板卡使用防静电袋包装。
开发板的正面与底面依旧采用STM32的通用白色铺板,C031C6封装大小与ST-LINK调试器F103C8T6一样。
纸盒内留有获取开发资源渠道的卡片,提供了二维码的链接:Access quick guides
开发板连接好电脑后,弹出类似U盘一样的提示符。
打开此“U盘”,里面包含了“MBED.HTM”html文件,链接:https://os.mbed.com/platforms/ST-Nucleo-C031C6/
简单操作一样开发板,板子出厂时默认的按钮控制三种不同灯闪频率的程序,现象如下(这里文件大小受限,截取小段视频演示): 接下来,下载基于Nucleo-C031C6的pack包,打开Keil的Pack Installer图标。
点击上图中的标识处,则可跳转到下载Pack网页
下载进度如图所示:
下载完成后,双击打开,默认安装选项即可。然后下载STM32CubeMX最新版6.7.0工具,下载地址:STMCubeMX,打开工具,选择board模式进入工程创建。
按照上述截图步骤,可以快速构建点灯工程框架,默认配置即带用户按钮(PC13),LED4(PA5)的外设。根据原理图可知,PA5输出高电平则点亮LED4。
en.MB1717-C031C6-B02_Schematic.zip
生成Keil工程源码后,使用Keil工具打开,在工程中稍加部分代码,即可实现LED4灯呼吸效果。部分代码展示如下:
#include "main.h"
I2C_HandleTypeDef hi2c1;
UART_HandleTypeDef huart1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);
static void MX_USART1_UART_Init(void);
void Breathe(void)
{
int i=0;
int time = 50;
for(i=0; i<time; i++)
{
HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_SET);
HAL_Delay(i);
HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_RESET);
HAL_Delay(time - i);
}
for(i=time; i>0; i--)
{
HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_SET);
HAL_Delay(i);
HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_RESET);
HAL_Delay(time - i);
}
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
while (1)
{
Breathe();
}
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_SET);
/*Configure GPIO pin : User_Button_Pin */
GPIO_InitStruct.Pin = User_Button_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(User_Button_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : Led_Pin */
GPIO_InitStruct.Pin = Led_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(Led_GPIO_Port, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
}
编译完成后,直接下载到开发板中,复位一下开发板,呈现的现象如下,此次分享就告一段落了,感谢EEPW举办的此次评测活动。