微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 第一步、赏玩 <FreeRtos + USART>

第一步、赏玩 <FreeRtos + USART>

时间:10-02 整理:3721RD 点击:
赏!
上靓照:



标清小图发两个

板子介绍:

->



板载ST-Link的USB接口和nucleo-64不一样,改成了当下更为流行的USB-Micro,妈妈再也不用担心我找不到USB线了。
开发板硬件资源框图:


板上的Zio-Connector看着就像一个超大号的Arduino接口,应该是Arduino的爸爸,哈哈
给出了一个USB-OTG接口,USB口也是Micro-USB,可以方便用户进行USB试用和调试。
因为F412没有以太网控制器,故板上的以太网硬件没有给出。

file:///C:\Users\ShenJiawei\AppData\Roaming\Tencent\Users\1716094642\QQ\WinTemp\RichOle\IJ4$Q}~_NW2%TITDE~BEX%C.png



此处跳线是选择ST-Link的MCO输出作为F412的外部时钟输入,默认是连接MCO的,板上没有给出外部高速晶振。若你想自己焊一个晶振,那么需要将这个跳线去除。



CN4的两个跳线帽按图示连接的时候ST-Link连接至板载MCU即STM32F412,若把它门拔下,则可作为ST-LINK给其他STM32下载程序。要是你手头缺ST-Link的话还可以把板载下载器掰下来使用,NULCEO板载下载器还带虚拟串口,调试使用的时候十分方便。

file:///C:\Users\ShenJiawei\AppData\Roaming\Tencent\Users\1716094642\QQ\WinTemp\RichOle\)4])(@4`HU0K@G}80BLIDMR.pngfile:///C:\Users\ShenJiawei\AppData\Roaming\Tencent\Users\1716094642\QQ\WinTemp\RichOle\)4])(@4`HU0K@G}80BLIDMR.png



单片机的PD8、PD9(USART3)连接至下载器的RX、TX端



这是板上的3个LED,那个绿灯连接的运放我是没找到在哪,可能是我不认识,,,,有知道的告诉我一下。

好吧,板子就先赏到这里。

玩!


我一直都是用寄存器开发的,这回耍一耍CUBEMX,不得不说,确实挺方便!

进入软件,新建工程

选择板子


体验官方板子真心十分方便,,,,

使用FREERTOS


选择外部时钟



打开USART3



时钟配置


project_setting




其它都使用默认即可,IO口的配置和选择也使用默认即可

生成工程..



在freertos.c中添加如下几个任务

  1. /* USER CODE BEGIN Application */
  2. static void LED_GREEN_Thread(void const * argument)
  3. {
  4.   while (1)
  5.   {
  6.     osDelay(1000);
  7.    
  8.     LED_con(LED_GREEN,LED_Toggle);
  9.   }
  10. }

  11. static void LED_RED_Thread(void const * argument)
  12. {
  13.   while (1)
  14.   {
  15.     osDelay(250);
  16.    
  17.     LED_con(LED_RED,LED_Toggle);
  18.   }
  19. }

  20. static void LED_BLUE_Thread(void const * argument)
  21. {
  22.   while (1)
  23.   {
  24.     osDelay(500);
  25.    
  26.     LED_con(LED_BLUE,LED_Toggle);
  27.   }
  28. }

  29. u8 Button_State = 0 , Button_event = 0;
  30. u32 Button_Time = 0;

  31. static void Button_Thread(void const * argument)
  32. {
  33.   u8 Last_Button_State = 0;
  34.   
  35.   while (1)
  36.   {
  37.     if(GPIOC->IDR & Px13_OB)
  38.     {
  39.       Button_State = 1;
  40.       if(Button_State != Last_Button_State)
  41.       {
  42.         Last_Button_State = Button_State;
  43.         Button_Time = HAL_GetTick();
  44.         Button_event = 1;
  45.       }
  46.     }
  47.     else
  48.     {
  49.       Button_State = 0;
  50.       if(Button_State != Last_Button_State)
  51.       {
  52.         Last_Button_State = Button_State;
  53.         Button_event = 2;
  54.         if(HAL_GetTick() > Button_Time) Button_Time = HAL_GetTick() - Button_Time;
  55.         else Button_Time = 0xFFFFFFFFU - Button_Time + HAL_GetTick();
  56.       }
  57.     }
  58.   }
  59. }

  60. static void System_Report_Thread(void const * argument)
  61. {
  62.   u32 systime = 0;
  63.   
  64.   printf("/********?DD?μ?×ó·¢é?ó???ì3ìá1?μ?ê?ó??ú?á£?********/\n\n");
  65.   printf("/********    Thanks for STMicroelectronics !      ********/\n\n");
  66.   
  67.   while (1)
  68.   {
  69.     if(Button_event == 1)
  70.     {
  71.       Button_event = 0;
  72.       printf("\nButton is pressed .");
  73.     }
  74.     else if(Button_event == 2)
  75.     {
  76.       Button_event = 0;
  77.       printf("\n\nButton pop up .\n\nButton for %d ms.\n\n",Button_Time);
  78.     }
  79.     if(systime < (HAL_GetTick() / 1000))
  80.     {
  81.       systime = HAL_GetTick() / 1000;
  82.       if(Button_State == 0) printf("The STM32F412ZG MCU kenel has been running for %d seconds...\n",systime);
  83.       else printf(".");
  84.     }
  85.   }
  86. }

复制代码


修改StartDefaultTask任务


编译后下载至开发板,实验中用到的资源:1、用户按键;2、三个LED;3、USART3
运行效果:
1、三个LED分别以0.5HZ,1HZ,2HZ的频率闪烁



2、串口输出芯片运行时间


3、串口输出按键事件和按下时间



结语:
          开发板设计还是很独到的,引出了片上所有的可用IO,并在Zio-Connector对大部分的片上外设做了规则引出,方便用户体验试用。下载器和开发板的一体化设计方便用户下载和调试程序,总之,板子十分诱人,没有获得此次试用机会的小伙伴可以买一个玩玩,非常棒,F412的板上资源也相当丰富,可以满足多数的开发需求,尤其在传感器和物联网方向。


最后,开箱体验就到这里了。谢谢~


赞一个

真棒。使用了freeRTOS操作系统

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top