http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html
下载成功后,安装 SetupSTM32CubeMX-4.17.0,提示需要java环境,根据提示下载java 插件jxpiinstall,安装很简单,不赘述。最后在安装路径下,生成图标 STM32CubeMX,点击进入图形化cube界面。
提示:安装路径和之后的源码包路径最好不要出现中文,需要java插件和CubeMX软件本身的编写语言,运行环境相关。楼主用的是win7旗舰版64位系统,运行良好。
打开cubeMX,如下:
点击“New Project”,新建一个工程,具体配置如下:
说明:楼主配置的是stm32f107VCT,具体型号可自行选择
这是配置的 FreeRTOS + lwip + FS + USB + RTC + IO的实例
接着配置时钟
IO普通配置,输入、输出等等简单配置
这是整体的代码结构,可以点击配置OS、lwip、usb、fatfs的一些参数,和移植这些组件一样,配置会改变相应的宏,最后生成相应代码
生成代码,需要相应的源码固件库(包含了hal驱动和中间件),这里加载了F1系列的1.4.0版本。
点击“help”–>“install newlibraries”,进入第二个界面,选择需要的固件包,进行下载。
(楼主直接升级1.4.0版本,出现下载失败,然后先下载了1.3.1,再下载了1.4.1就可以了,不知道什么原因)
最后一步,成功工程文件,这里填写工程名字,保存路径和用到的IDE类型。楼主用的keil472,其他参数可以根据需求更改
现在开工工程看一下吧,生成的代码结构比较清晰,可以根据自己的需求进行修改,编译没有错误
附上一段生成的main函数代码,供参考,比较规范
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC1_Init();
MX_SPI1_Init();
MX_TIM2_Init();
MX_WWDG_Init();
MX_RTC_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* USER CODE BEGIN RTOS_MUTEX */
/* add mutexes, ... */
/* USER CODE END RTOS_MUTEX */
/* USER CODE BEGIN RTOS_SEMAPHORES */
/* add semaphores, ... */
/* USER CODE END RTOS_SEMAPHORES */
/* USER CODE BEGIN RTOS_TIMERS */
/* start timers, add new ones, ... */
/* USER CODE END RTOS_TIMERS */
/* Create the thread(s) */
/* definition and creation of defaultTask */
osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
/* definition and creation of myTask02 */
osThreadDef(myTask02, StartTask02, osPriorityIdle, 0, 128);
myTask02Handle = osThreadCreate(osThread(myTask02), NULL);
/* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */
/* USER CODE END RTOS_THREADS */
/* Create the queue(s) */
/* definition and creation of myQueue01 */
osMessageQDef(myQueue01, 16, uint16_t);
myQueue01Handle = osMessageCreate(osMessageQ(myQueue01), NULL);
/* USER CODE BEGIN RTOS_QUEUES */
/* add queues, ... */
/* USER CODE END RTOS_QUEUES */
/* Start scheduler */
osKernelStart();
/* We should never get here as control is now taken by the scheduler */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
附一些链接供参考:
配置cube教程文章
下载源码包失败解决方法