首页 > 评测 > 【NUCLEO-U5A5ZJ-Q测评】用ThreadX点个灯
【NUCLEO-U5A5ZJ-Q测评】用ThreadX点个灯
- [导读]
- 1、STM32U5A5系列芯片是STMicroelectronics推出的一款超低功耗微控制器系列,基于高性能Arm Cortex-M33 32位RISC内核,最高工作频率为160MHz。该系列芯片具有以下特点: 高性能:Cortex-M33内核具有单精度FPU(浮点
1、STM32U5A5系列芯片是STMicroelectronics推出的一款超低功耗微控制器系列,基于高性能Arm Cortex-M33 32位RISC内核,最高工作频率为160MHz。该系列芯片具有以下特点:
高性能:Cortex-M33内核具有单精度FPU(浮点单元),支持所有Arm单精度数据处理指令和所有数据类型,还实现了完整的DSP(数字信号处理)指令集和MPU(内存保护单元),可增强应用安全性。
大容量存储器:该系列芯片嵌入高速存储器(4Mbytes Flash 和2.5Mbytes SRAM),可满足各种应用需求。STM32U5A5是STM32 系列中首款提供 4 MB Flash 的 MCU,64 至 169 引脚封装都支持。
丰富的通信接口:该系列芯片提供丰富的通信接口,包括6个I2C、3个SPI、4个USART、2个UART、1个低功耗UART、2个SAI、1个DCMI(数码相机接口)、2个SDMMC、1个FDCAN、1个USB OTG高速、1个USB Type-C/USB Power Delivery控制器和1个通用同步8-/16位PSSI(并行数据输入/输出从属接口)。特别是高速的USB接口省掉了外接高速USB PHY的麻烦。
广泛的应用领域:该系列芯片可广泛应用于工业控制、物联网、消费电子、医疗保健等领域。
芯片的内核和外设简图如下
2、开发板 Nucleo-U5A5ZI-Q 基于 144引脚通用Nucleo标准设计,采用 STM32U5 微控制器,提供了一种灵活且经济的方式来试验新概念和构建原型。通过 STM32U5 微控制器提供的各种性能和功耗特性组合,用户可以选择满足自己需求的解决方案。
通过 ST Zio 连接器(兼容 Arduino Uno V3)和 ST morpho 接头,可以方便地扩展开发板的功能,连接各种定制的扩展板。集成了 STLINK-V3E 调试/编程器,不需要额外的调试器。
功能详细框图如下:
3、点个灯
下面用ThreadX点个灯。再最新的系列芯片,ST将RTOS和USB协议栈都转向了ThreadX和USBX.
Azure RTOS ThreadX 是 Microsoft 提供的高级工业级实时操作系统 (RTOS)。 它是专门为深度嵌入式实时 IoT 应用程序设计的。 Azure RTOS ThreadX 提供高级计划、通信、同步、计时器、内存管理和中断管理功能。 此外,Azure RTOS ThreadX 具有许多高级功能,包括 picokernel 体系结构、preemption-threshold 计划、event-chaining、执行分析、性能指标和系统事件跟踪。 Azure RTOS ThreadX 非常易于使用,适用于要求极其苛刻的嵌入式应用程序。 Azure RTOS ThreadX 在各种产品(包括消费者设备、医疗电子设备和工业控制设备)上的部署次数已达数十亿次。Azure RTOS ThreadX 的占用空间非常小,最少只需要一个 2KB 的指令区域和 1 KB 的 RAM.
测试使用的是ST提供的ThreadX\Tx_Thread_Creation里面的例子。主要是闪烁LD1用于测试。
创建了3个任务:"Main Thread"、"Thread One"、"Thread Two" 。任务
"Thread One" - LED_GREEN toggles every 500ms for 5 seconds
"Thread Two" - LED_GREEN toggles every 200ms for 5 seconds
"Main Thread" - Success status (After 3 times) : 'LED_GREEN' toggles every 1 second for ever.
任务1、2比较简单就是闪烁LED
复制代码当"Thread One"、"Thread Two"完成之后,"Main Thread"将会删除这2个任务。然后将用户的绿灯1秒闪烁一次。
复制代码STM32可以免费使用ThreadX全家桶之后,ST的芯片已经基本放弃了freertos。因为包括了文件系统,网络协议,USB协议栈等,所以ThreadX全家桶更加方便适合学习和使用。如果有其它的RTOS的基础,转到ThreadX上应该非常简单。
高性能:Cortex-M33内核具有单精度FPU(浮点单元),支持所有Arm单精度数据处理指令和所有数据类型,还实现了完整的DSP(数字信号处理)指令集和MPU(内存保护单元),可增强应用安全性。
大容量存储器:该系列芯片嵌入高速存储器(4Mbytes Flash 和2.5Mbytes SRAM),可满足各种应用需求。STM32U5A5是STM32 系列中首款提供 4 MB Flash 的 MCU,64 至 169 引脚封装都支持。
丰富的通信接口:该系列芯片提供丰富的通信接口,包括6个I2C、3个SPI、4个USART、2个UART、1个低功耗UART、2个SAI、1个DCMI(数码相机接口)、2个SDMMC、1个FDCAN、1个USB OTG高速、1个USB Type-C/USB Power Delivery控制器和1个通用同步8-/16位PSSI(并行数据输入/输出从属接口)。特别是高速的USB接口省掉了外接高速USB PHY的麻烦。
广泛的应用领域:该系列芯片可广泛应用于工业控制、物联网、消费电子、医疗保健等领域。
芯片的内核和外设简图如下
2、开发板 Nucleo-U5A5ZI-Q 基于 144引脚通用Nucleo标准设计,采用 STM32U5 微控制器,提供了一种灵活且经济的方式来试验新概念和构建原型。通过 STM32U5 微控制器提供的各种性能和功耗特性组合,用户可以选择满足自己需求的解决方案。
通过 ST Zio 连接器(兼容 Arduino Uno V3)和 ST morpho 接头,可以方便地扩展开发板的功能,连接各种定制的扩展板。集成了 STLINK-V3E 调试/编程器,不需要额外的调试器。
功能详细框图如下:
3、点个灯
下面用ThreadX点个灯。再最新的系列芯片,ST将RTOS和USB协议栈都转向了ThreadX和USBX.
Azure RTOS ThreadX 是 Microsoft 提供的高级工业级实时操作系统 (RTOS)。 它是专门为深度嵌入式实时 IoT 应用程序设计的。 Azure RTOS ThreadX 提供高级计划、通信、同步、计时器、内存管理和中断管理功能。 此外,Azure RTOS ThreadX 具有许多高级功能,包括 picokernel 体系结构、preemption-threshold 计划、event-chaining、执行分析、性能指标和系统事件跟踪。 Azure RTOS ThreadX 非常易于使用,适用于要求极其苛刻的嵌入式应用程序。 Azure RTOS ThreadX 在各种产品(包括消费者设备、医疗电子设备和工业控制设备)上的部署次数已达数十亿次。Azure RTOS ThreadX 的占用空间非常小,最少只需要一个 2KB 的指令区域和 1 KB 的 RAM.
测试使用的是ST提供的ThreadX\Tx_Thread_Creation里面的例子。主要是闪烁LD1用于测试。
创建了3个任务:"Main Thread"、"Thread One"、"Thread Two" 。任务
"Thread One" - LED_GREEN toggles every 500ms for 5 seconds
"Thread Two" - LED_GREEN toggles every 200ms for 5 seconds
"Main Thread" - Success status (After 3 times) : 'LED_GREEN' toggles every 1 second for ever.
任务1、2比较简单就是闪烁LED
- void ThreadOne_Entry(ULONG thread_input)
- {
- (void) thread_input;
- uint8_t count = 0;
- /* Infinite loop */
- while(1)
- {
- HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
- /* Delay for 500ms (App_Delay is used to avoid context change). */
- App_Delay(50);
- count ++;
- if (count == 10)
- {
- count = 0;
- if (tx_event_flags_set(&EventFlag, THREAD_ONE_EVT, TX_OR) != TX_SUCCESS)
- {
- Error_Handler();
- }
- }
- }
- }
- void MainThread_Entry(ULONG thread_input)
- {
- /* USER CODE BEGIN MainThread_Entry */
- UINT old_prio = 0;
- UINT old_pre_threshold = 0;
- ULONG actual_flags = 0;
- uint8_t count = 0;
- (void) thread_input;
- while (count < 3)
- {
- count++;
- if (tx_event_flags_get(&EventFlag, THREAD_ONE_EVT, TX_OR_CLEAR,
- &actual_flags, TX_WAIT_FOREVER) != TX_SUCCESS)
- {
- Error_Handler();
- }
- else
- {
- /* Update the priority and preemption threshold of ThreadTwo
- to allow the preemption of ThreadOne */
- tx_thread_priority_change(&ThreadTwo, NEW_THREAD_TWO_PRIO, &old_prio);
- x_thread_preemption_change(&ThreadTwo, NEW_THREAD_TWO_PREEMPTION_THRESHOLD, &old_pre_threshold);
- if (tx_event_flags_get(&EventFlag, THREAD_TWO_EVT, TX_OR_CLEAR,
- &actual_flags, TX_WAIT_FOREVER) != TX_SUCCESS)
- {
- Error_Handler();
- }
- else
- {
- /* Reset the priority and preemption threshold of ThreadTwo */
- tx_thread_priority_change(&ThreadTwo, THREAD_TWO_PRIO, &old_prio);
- tx_thread_preemption_change(&ThreadTwo, THREAD_TWO_PREEMPTION_THRESHOLD, &old_pre_threshold);
- }
- }
- }
- /* Destroy ThreadOne and ThreadTwo */
- tx_thread_terminate(&ThreadOne);
- tx_thread_terminate(&ThreadTwo);
- /* Infinite loop */
- while(1)
- {
- HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
- /* Thread sleep for 1s */
- tx_thread_sleep(100);
- }
- /* USER CODE END MainThread_Entry */
- }
- 本文系21ic原创,未经许可禁止转载!
网友评论
- 联系人:巧克力娃娃
- 邮箱:board@21ic.com
- 我要投稿
-
欢迎入驻,开放投稿
行业新闻
-
RAK831 Lite:基于树莓派3的LoRa网关... 2022-06-17
-
Imagination推出PowerVR AX2185和AX2145神经... 2022-06-17
-
ODROID-GO是一款兼容Arduino的基于ESP32的便... 2022-06-17
项目外包
more+
- PID温度控制器
预算:¥700003天前
- 摄像头的可视画面需要一直超上(linux系统,ARM)
预算:¥1000018小时前
- DICOM协议搭建(ARM架构,linux系统)
预算:¥1000017小时前
- 需MIPI摄像头隔离电路,实现3-4米能长距离
预算:¥1000017小时前
- 膨宫仪的控制板,控制流量和检测压力
预算:¥1000016分钟前
- 无创自动测量血压计 NIBP模块
预算:¥100007小时前