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

查看: 2928|回复: 6

[STM32L496] 【NUCLEO-L496ZG评测】+freertos软定时器和线程使用

[复制链接]

35

主题

1405

回帖

22

蝴蝶豆

金牌会员

最后登录
2020-12-3
发表于 2017-4-15 19:50:58 | 显示全部楼层 |阅读模式
本帖最后由 damiaa 于 2017-4-16 12:33 编辑

                                   NUCLEO-L496ZG+freertos软定时器和线程使用
终于收到NUCLEO-L496ZG,自然还是很开心的,那开始评测吧。先来张倩照:
9A727C22681EDD7AF2DF78D01834F53D.jpg
STMm32L496是STM32L4系列家族的新品!Stm32L496是目前STM32L4XX的最新版本。板子做工精致,耐看。144CPU,阔气。
STM32L496芯片特性
ARM Cortex-M4内核,最高主频80MHz,具备FPU、ART加速技术,CoreMark测试得分为273.55(@80Mhz)
超低功耗,运行模式下功耗为37uA/MHz(SMPS模式下),停机模式(Stop mode 2)下功耗约2.57uA,待机模式下最代功耗约108nA
丰富的外设支持,主要包括RTC、SPI、I2C、UART等常规外设的支持
8X40或4X44 LCD支持
USB OTG全速支持
LPTIMER及LPUART支持
开发板基本特性:

超低功耗,运行模式下功耗为37uA/MHz(SMPS模式下),停机模式(Stop mode 2)下功耗约2.57uA,待机模式下最代功耗约108nA
丰富的外设支持,主要包括RTC、SPI、I2C、UART等常规外设的支持
8X40或4X44 LCD支持
USB OTG全速支持
LPTIMER及LPUART支持

开发板上电:
192847g9j9a7vok9088dka.jpg
193120hvvo9zwvavdemxx9.jpg
开发环境搭建;
1,            安装试用版MDK523或其他.
2,            安装STM32CUBEMX.
3,            下载STM32CubeL4解压(如果你想看看参考代码)
4,            FREERTOS试跑
打开STM32cUBEMx,NEW一个工程,选择板子为NELUE-STM32L496ZG
选择上FREERTOS,如下
QQ图片20170415193255.png
记得配置一下软件定时器 Config parameters中启用软件定时器。USE_TIMES ENABLE如下;
QQ图片20170415193358.png
Sys 的Time base source 选择一个定时器,这里选定时器1 ,其他也是可以的(不要SYSTICK,这个配置好像系统冲突)
QQ图片20170415193540.png
生成一个MDK项目。
QQ图片20170415193647.png
修改程序:
1,main函数中加
/* start timers, add new ones, ... */
         osTimerDef(LEDTimer, osTimerCallback);
   osTimerId osTimer = osTimerCreate(osTimer(LEDTimer), osTimerPeriodic, NULL);
   /* Start Timer */
   osTimerStart(osTimer, 200);
  /* USER CODE END RTOS_TIMERS */
   osThreadDef(LEDThread, ToggleLEDsThread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE);
   osThreadCreate(osThread(LEDThread), NULL);

//  /* Start scheduler */
  osKernelStart();
注释掉:
//  /* Create the thread(s) */
//  /* definition and creation of defaultTask */
//  osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
//  defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);

//  /* USER CODE BEGIN RTOS_THREADS */
//  /* add threads, ... */
//        
//  /* USER CODE END RTOS_THREADS */

//  /* USER CODE BEGIN RTOS_QUEUES */
//  /* add queues, ... */
//  /* USER CODE END RTOS_QUEUES */
//

//  /* Start scheduler */
//  osKernelStart();

2,main.c中加入回调函数和线程函数:
/* USER CODE BEGIN 4 */
static void osTimerCallback(void const *argument)
{
  (void) argument;

  /* Toggle LED1*/
        // HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET);
        // HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_SET);
  GPIOB->ODR ^= LD3_Pin;
}
static void ToggleLEDsThread(void const *argument)
{
  (void) argument;

  for (;;)
  {
    /* Toggle LED2 each 400ms */
   GPIOB->ODR ^= LD2_Pin;;

    osDelay(400);
  }
}
/* USER CODE END 4 */
3,main函数前面加下面头文件申明
static void osTimerCallback(void const *argument);
static void ToggleLEDsThread(void const *argument);

QQ图片20170415193836.png
这样就实现了软件定时器定时点亮LED和线程定时启动LED两个功能。
编译:
运行:两个LED分别以不同的频率闪动了。一个是软定时器实现,一个是线程实现。
IMG_20170415_192845.jpg

代码: freertostest3.rar (12.07 MB, 下载次数: 61)
回复

使用道具 举报

9

主题

179

回帖

3

蝴蝶豆

高级会员

最后登录
2019-10-28
发表于 2017-4-16 10:38:53 | 显示全部楼层
很详细的例子
回复 支持 反对

使用道具 举报

35

主题

1405

回帖

22

蝴蝶豆

金牌会员

最后登录
2020-12-3
 楼主| 发表于 2017-4-16 12:26:37 | 显示全部楼层

谢谢支持
回复 支持 反对

使用道具 举报

0

主题

227

回帖

0

蝴蝶豆

高级会员

最后登录
2019-4-24
发表于 2017-4-17 22:39:20 | 显示全部楼层

谢谢分享,晚上好!
回复 支持 反对

使用道具 举报

76

主题

683

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-11-19
发表于 2017-4-18 16:58:38 | 显示全部楼层
工程里有这么个函数:
void StartDefaultTask(void const * argument)
但没看到创建响应任务啊。
回复 支持 反对

使用道具 举报

35

主题

1405

回帖

22

蝴蝶豆

金牌会员

最后登录
2020-12-3
 楼主| 发表于 2017-4-20 16:10:36 | 显示全部楼层
any012 发表于 2017-4-18 16:58
工程里有这么个函数:
void StartDefaultTask(void const * argument)
但没看到创建响应任务啊。 ...

那个应该是没用到。你拿源代码跑跑看。
回复 支持 反对

使用道具 举报

35

主题

1405

回帖

22

蝴蝶豆

金牌会员

最后登录
2020-12-3
 楼主| 发表于 2017-4-20 16:11:18 | 显示全部楼层
asmhai 发表于 2017-4-17 22:39
谢谢分享,晚上好!

谢谢支持。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版