你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-L496ZG评测】+ RTX点灯

[复制链接]
原来的你 提问时间:2017-5-14 12:05 /
本帖最后由 原来的你 于 2017-5-14 12:10 编辑

转眼很长时间过去了,由于NUCLEO-L496ZG借给网友做开发新产品开发评估,所以一直没有开发评测NUCLEO-L496ZG,今天抽空先初次体验一下NUCLEO-L496ZG,后面再给出更多享。本人一直喜欢MCU跑操作系统,目前来说可用的操作系统很多,本次选择RTX来作为NUCLEO-L496ZG系统平台。首先当然我们需要下载NUCLEO-L496ZG的支持包,en.stm32cubel4\STM32Cube_FW_L4_V1.8.0,本次我们选择en.stm32cubel4\STM32Cube_FW_L4_V1.8.0\Projects\STM32L496ZG-Nucleo\Examples\GPIO\GPIO_IOToggle作为我们的demo板。
打开工程如下,
1.png


添加RTX 系统的配置文件, 配置文件在MDK的安装目录Keil_v5\ARM\RL\RTX\Config下面,文件名为 RTX_Conf_CM.c,将这个文件复制到 MDK 工程的en.stm32cubel4\STM32Cube_FW_L4_V1.8.0\Projects\STM32L496ZG-Nucleo\Examples\GPIO\GPIO_IOToggle\Src 文件夹下面,并添加到MDK 工程上
2.png
3.png
4.png


通过上面两步,RTX 操作系统的移植就完成,就是这么简单。下面如图所示就是RTX配置,根据需要进行配置。

5.png

运行程序如下:

  1. int main(void)
  2. {
  3.   /* This sample code shows how to use GPIO HAL API to toggle LED1 and LED2 IOs
  4.     in an infinite loop. */

  5.   /* STM32L4xx HAL library initialization:
  6.        - Configure the Flash prefetch
  7.        - Systick timer is configured by default as source of time base, but user
  8.          can eventually implement his proper time base source (a general purpose
  9.          timer for example or other time source), keeping in mind that Time base
  10.          duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
  11.          handled in milliseconds basis.
  12.        - Set NVIC Group Priority to 4
  13.        - Low Level Initialization
  14.      */
  15.   HAL_Init();

  16.   /* Configure the system clock to 80 MHz */
  17.   SystemClock_Config();
  18.   
  19.   /* -1- Enable GPIO Clock (to be able to program the configuration registers) */
  20.   LED1_GPIO_CLK_ENABLE();
  21.   LED2_GPIO_CLK_ENABLE();

  22.   /* -2- Configure IO in output push-pull mode to drive external LEDs */
  23.   GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  24.   GPIO_InitStruct.Pull  = GPIO_PULLUP;
  25.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

  26.   GPIO_InitStruct.Pin = LED1_PIN;
  27.   HAL_GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStruct);
  28.   GPIO_InitStruct.Pin = LED2_PIN;
  29.   HAL_GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);
  30.         
  31.         os_sys_init_user (AppTaskStart, 2,&AppTaskStartStk, sizeof(AppTaskStartStk));
  32.         
  33.         while(1);
  34. }
复制代码
  1. static void AppTaskCreate (void);
  2. __task void AppTaskLED(void);
  3. __task void AppTaskStart(void);

  4. static uint64_t AppTaskLEDStk[512/8]; /* 任务栈 */
  5. static uint64_t AppTaskStartStk[512/8]; /* 任务栈 */

  6. /* 任务句柄 */
  7. OS_TID HandleTaskLED = NULL;

  8. __task void AppTaskStart(void)
  9. {
  10.                 AppTaskCreate();
  11.                 while(1)
  12.                 {
  13.                                 HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);
  14.                                 os_dly_wait(500);
  15.      }
  16. }

  17. __task void AppTaskLED(void)
  18. {        
  19.           while(1)
  20.                  {
  21.         HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
  22.         os_dly_wait(500);
  23.      }
  24. }
复制代码
  1. static void AppTaskCreate (void)
  2. {
  3.     HandleTaskLED = os_tsk_create_user(AppTaskLED, 1, &AppTaskLEDStk, sizeof(AppTaskLEDStk));
  4. }
复制代码







收藏 1 评论0 发布时间:2017-5-14 12:05

举报

0个回答

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版