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

查看: 3200|回复: 9

[STM32L476] 【NUCLEO-L476RG开发】FreeRTOS+LED_Toggle单任务

[复制链接]

8

主题

252

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-22
发表于 2015-11-14 00:07:56 | 显示全部楼层 |阅读模式
本帖最后由 fjjjnk1234 于 2015-11-14 00:12 编辑

之前都是用标准外设库开发STM32,这次的STM32L476本来也想用标准外设库,但是在ST官网上貌似没有,顺便看了一下F7系列的,也没有找到。感觉HAL库是一种趋势,有一种新事物代替旧事物的感觉。所以,只能紧跟时代潮流,学习一下HAL库,体验一下STM32CubeMX自动生成代码的功能。第一次使用STM32CubeMX生成一个FreeRTOS单任务的程序,感觉还挺方便的。记录一下过程。
NewProject
1.png
切换到Board Selector标签,板子类型选择Nucleo64MCU系列STM32L4,就出现NUCLEO-L476RG这个板子
2.png
OK
3.png
从这张图可以很清晰地看出板子上唯一的LED和按键分别接在PA5PC13,以及晶振和USART对应的引脚

没用到按键就先把PC13的状态Reset_State
4.png
使能FreeRTOS,进入Configuration标签
5.png
配置GPIO
6.png
配置FREERTOS
7.png
新建任务LED_TOGGLE
8.png

OK
Project->Settings
9.png
注意:一定要全英文路径,不然会出现如下错误
10.png
然后Project->Generate Code就生成相关的代码了
11.png
打开工程文件,填充LED_ Toggle任务函数
  1. /* LED_Toggle_Task function */
  2. void LED_Toggle_Task(void const * argument)
  3. {
  4.   /* USER CODE BEGIN LED_Toggle_Task */
  5.   /* Infinite loop */
  6.   for(;;)
  7.   {
  8.                 HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
  9.     osDelay(1000);
  10.   }
  11.   /* USER CODE END LED_Toggle_Task */
  12. }
复制代码
主函数的代码都是STM32 Cube生成好的,不需要修改,非常方便,这样一个简单的FreeRTOS单任务的程序就完成了
  1. int main(void)
  2. {

  3.   /* USER CODE BEGIN 1 */

  4.   /* USER CODE END 1 */

  5.   /* MCU Configuration----------------------------------------------------------*/

  6.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  7.   HAL_Init();

  8.   /* Configure the system clock */
  9.   SystemClock_Config();

  10.   /* Initialize all configured peripherals */
  11.   MX_GPIO_Init();

  12.   /* USER CODE BEGIN 2 */

  13.   /* USER CODE END 2 */

  14.   /* USER CODE BEGIN RTOS_MUTEX */
  15.   /* add mutexes, ... */
  16.   /* USER CODE END RTOS_MUTEX */

  17.   /* USER CODE BEGIN RTOS_SEMAPHORES */
  18.   /* add semaphores, ... */
  19.   /* USER CODE END RTOS_SEMAPHORES */

  20.   /* USER CODE BEGIN RTOS_TIMERS */
  21.   /* start timers, add new ones, ... */
  22.   /* USER CODE END RTOS_TIMERS */

  23.   /* Create the thread(s) */
  24.   /* definition and creation of defaultTask */
  25.   osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
  26.   defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);

  27.   /* definition and creation of LED_TOGGLE */
  28.   osThreadDef(LED_TOGGLE, LED_Toggle_Task, osPriorityNormal, 0, 128);
  29.   LED_TOGGLEHandle = osThreadCreate(osThread(LED_TOGGLE), NULL);

  30.   /* USER CODE BEGIN RTOS_THREADS */
  31.   /* add threads, ... */
  32.   /* USER CODE END RTOS_THREADS */

  33.   /* USER CODE BEGIN RTOS_QUEUES */
  34.   /* add queues, ... */
  35.   /* USER CODE END RTOS_QUEUES */


  36.   /* Start scheduler */
  37.   osKernelStart();
  38.   
  39.   /* We should never get here as control is now taken by the scheduler */

  40.   /* Infinite loop */
  41.   /* USER CODE BEGIN WHILE */
  42.   while (1)
  43.   {
  44.   /* USER CODE END WHILE */

  45.   /* USER CODE BEGIN 3 */

  46.   }
  47.   /* USER CODE END 3 */

  48. }
复制代码
系统内核启动后,LED_Toggle的任务就开始不断执行
编译,下载后,复位,就能看到LED以0.5Hz的频率闪烁
IMAG0215.jpg

评分

参与人数 1ST金币 +15 收起 理由
沐紫 + 15

查看全部评分

<
回复

使用道具 举报

10

主题

1651

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-2-15
发表于 2015-11-14 09:41:41 | 显示全部楼层
这样的使用心得多多益善。
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2015-11-14 10:22:44 | 显示全部楼层
多谢分享,
回复 支持 反对

使用道具 举报

18

主题

668

回帖

0

蝴蝶豆

金牌会员

最后登录
2017-4-9
发表于 2015-11-14 10:34:53 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

76

主题

5715

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-10-15
发表于 2015-11-14 10:39:59 | 显示全部楼层
多谢分享 null - 副本 - 副本 - 副本.png null - 副本 - 副本 (3).png null - 副本 (2) - 副本.png null - 副本 (3).png null - 副本.png
回复 支持 反对

使用道具 举报

18

主题

271

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-3-16
发表于 2015-11-14 11:30:04 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

8

主题

407

回帖

0

蝴蝶豆

高级会员

最后登录
2016-11-24
发表于 2015-11-14 11:41:33 | 显示全部楼层
期待楼主更高级应用的分享,不要浪费了这么高端的板子……
回复 支持 反对

使用道具 举报

93

主题

2449

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-6-28
发表于 2015-11-14 13:47:48 | 显示全部楼层
谢谢分享  
回复 支持 反对

使用道具 举报

41

主题

2476

回帖

282

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2015-11-14 21:53:47 | 显示全部楼层
顶一下        
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2019-5-7
发表于 2019-4-16 10:07:23 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

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