#采用stm32cubeMX创建工程流程

1、到官网下载软件

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

#采用stm32cubeMX创建工程流程_第1张图片

下载成功后,安装 SetupSTM32CubeMX-4.17.0,提示需要java环境,根据提示下载java 插件jxpiinstall,安装很简单,不赘述。最后在安装路径下,生成图标 STM32CubeMX,点击进入图形化cube界面。

提示:安装路径和之后的源码包路径最好不要出现中文,需要java插件和CubeMX软件本身的编写语言,运行环境相关。楼主用的是win7旗舰版64位系统,运行良好。

2、配置工程

打开cubeMX,如下:

#采用stm32cubeMX创建工程流程_第2张图片

点击“New Project”,新建一个工程,具体配置如下:
说明:楼主配置的是stm32f107VCT,具体型号可自行选择

#采用stm32cubeMX创建工程流程_第3张图片

这是配置的 FreeRTOS + lwip + FS + USB + RTC + IO的实例

#采用stm32cubeMX创建工程流程_第4张图片

接着配置时钟

#采用stm32cubeMX创建工程流程_第5张图片

IO普通配置,输入、输出等等简单配置

#采用stm32cubeMX创建工程流程_第6张图片

这是整体的代码结构,可以点击配置OS、lwip、usb、fatfs的一些参数,和移植这些组件一样,配置会改变相应的宏,最后生成相应代码

#采用stm32cubeMX创建工程流程_第7张图片

3、生成代码

生成代码,需要相应的源码固件库(包含了hal驱动和中间件),这里加载了F1系列的1.4.0版本。
点击“help”–>“install newlibraries”,进入第二个界面,选择需要的固件包,进行下载。
(楼主直接升级1.4.0版本,出现下载失败,然后先下载了1.3.1,再下载了1.4.1就可以了,不知道什么原因)

#采用stm32cubeMX创建工程流程_第8张图片
#采用stm32cubeMX创建工程流程_第9张图片

最后一步,成功工程文件,这里填写工程名字,保存路径和用到的IDE类型。楼主用的keil472,其他参数可以根据需求更改

#采用stm32cubeMX创建工程流程_第10张图片

4、打开工程

现在开工工程看一下吧,生成的代码结构比较清晰,可以根据自己的需求进行修改,编译没有错误

#采用stm32cubeMX创建工程流程_第11张图片

5参考

附上一段生成的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教程文章
下载源码包失败解决方法

你可能感兴趣的:(FreeRTOS)