Commit Graph

1831 Commits

Author SHA1 Message Date
Misthao fab0e506be
新增stm32f401-weact-blackpill BSP(STM32F401CCU6最小系统板) (#6973)
* 新增stm32f401-weact-blackpill
2023-03-06 10:09:03 +08:00
Rbb666 d1e1f66e42 [STM32]Fix f469 touch build error and set lvgl to double buffer 2023-03-02 23:22:02 -05:00
Rbb666 00ad3921e4 [STM32]Add STM32F723E-DISCO bsp support 2023-03-01 08:23:35 -05:00
Rbb666 afd86f4547
fix stm32 drv_lcd some problem (#6836)
* LTDC:将 Alpha 通道默认设置为0(完全透明)
* rt_malloc 替换为 rt_malloc_align
2023-03-01 02:12:50 -05:00
Zxy f5798d9917
[pin][5.0.0] 修正pin框架数据类型使用不当 (#6934) 2023-02-26 21:17:51 -05:00
liYangYang 93d572dee6
[spi][5.0.0] 修正SPI设备框架中,对函数返回值类型使用不恰当的情况 (#6937) 2023-02-26 21:09:07 -05:00
liYangYang 1eec660b12
[spi]添加rt_spi_bus_attach_device_cspin 函数 (#6916)
这个函数实现了原先的挂载功能,并且调用pin框架,初始化cs引脚,是一个功能相对完善的挂载函数。用户也能更简单的使用。
该函数取代rt_spi_bus_attach_device,后续rt_spi_bus_attach_device会被逐渐淘汰掉。新的BSP以及软件包应当使用rt_spi_bus_attach_device_cspin新函数。

STM32L475潘多拉测试通过。
2023-02-11 22:14:54 -05:00
Meco Man f58d3c5200 rt_device_write/read return data type as rt_ssize_t
rt_ssize_t can give negative error code, which follows the unix style correctly
2023-02-07 21:43:57 -05:00
Meco Man 9b109639d1 [stm32] sconscript typo 2023-01-22 22:07:54 -05:00
liYangYang 6eaf9a9c57
[stm32][qspi] qspi attach 函数问题解决方案 (#6867)
* [qspi] qspi attach 函数解决方案

* pin

* 更改函数名字
2023-01-18 22:04:45 -05:00
liYangYang 63294afc9d
[stm32][softspi]soft spi attach函数问题解决方案 (#6868)
* [softspi]soft spi attach函数问题解决方案

* 更改函数名
2023-01-18 22:03:48 -05:00
liYangYang 7ff64c1cfd
[stm32][spi] spi attach函数问题解决方案 (#6864)
attach #6819
2023-01-18 00:27:08 -05:00
会飞的猪 65f1804005 [bsp/stm32wle5-yizhilian-lm402]修复scons --dist缺失大量文件 2023-01-17 21:32:43 -05:00
会飞的猪 265dbc0ce1 [bsp/stm32wle5-yizhilian-lm401]修复scons --dist缺失大量文件 2023-01-17 21:32:43 -05:00
Zxy c9f7f0e771
[BSP][stm32] fix the compile error 2023-01-16 23:21:21 -05:00
Meco Man ddccef3a64 modify RT_ALIGN_SIZE as 8 by default 2023-01-12 22:47:23 -05:00
Meco Man f4fa7ba970 [RTduino][stm32f469-disco][readme] fix typo 2023-01-13 11:40:57 +08:00
Meco Man 09b36e76f2 [RTduino][stm32f411-nucleo] add English readme 2023-01-13 11:40:57 +08:00
Meco Man baac8760a5 [RTduino][stm32f410-nucleo] add English readme 2023-01-13 11:40:57 +08:00
Meco Man 120595d371 [RTduino][readme] correct grammar 2023-01-13 11:40:57 +08:00
Meco Man b310541471 [env] add scons --strict
此commit意图在脚本中增加 scons --strict命令,使用该命令编译工程时,会自动将CFLAGS CXXFLAGS设置为 Werrors,即较为严格的编译模式,任何警告都会当做错误来处理。

该命令主要用于CI,在CI执行bsp编译时,可以使用 scons --strict命令。现在QEMU的rtconfig.py 为了CI检查,直接将CFLAGS加上了Werrors,导致正常编译过程中也把警告当做了错误,对日常使用该bsp造成了影响。
2023-01-12 01:43:44 -05:00
lpy 071d52ad44
[RTduino][stm32f410-nucleo] 添加readme,在pins_arduino.c和pins_arduino.h添加了USER_KEY引脚编号 (#6838)
* 添加readme
* 更改pins_arduino.h引脚编号
Co-authored-by: Man, Jianting (Meco) <920369182@qq.com>
2023-01-10 21:41:58 -05:00
Meco Man 7ecba50ff6 format stm32 drivers 2023-01-08 22:52:13 -05:00
Meco Man 592284c66c format link scripts 2023-01-08 22:52:13 -05:00
Meco Man 9bc68d26a4 format Kconfig and sconscript 2023-01-08 22:52:13 -05:00
Man, Jianting (Meco) f4b285dc9c
improve sensor framework (#6784)
* [stm32l475-pandora] rename sensor_port.c as drv_sensors.c
* [sensor][cmd] add enter critical section protection
* [sensor] add sensor reset command
2023-01-08 21:33:38 -05:00
liYangYang 7c05d8517c
[STM32][SPI]解决挂载函数里面不同bsp对uaer_data的滥用 (#6819)
* [spi]attach 片选引脚依赖pin框架
* 修改attach函数
2023-01-07 23:03:42 -05:00
wdfk-prog 431579a166
[stm32][adc]更改配置通道与校准函数顺序 (#6758)
* [stm32][adc]更改配置通道与校准函数顺序
* 添加16位与14位分辨率配置
* 添加内部参考电压与温度,电池电压通道配置

* [stm32][adc]修改返回参考电压函数
* 返回准确的参考电压值
* 通过该值在使用__HAL_ADC_CALC_DATA_TO_VOLTAGE宏计算的电压值更为准确

* 删除多余代码

* 规划代码格式

* 更新支持其余芯片
* 已测试F429
2023-01-02 01:47:58 -05:00
螺丝松掉的人 c38c6e2c83
[rtduino]:add README for stm32f411-weact-blackpill pinout (#6807)
* [rtduino]:add README for stm32f411-weact-blackpill pinout
2023-01-01 23:39:40 -05:00
褚仕成 2b41f80f0e [rtduino]: fix README 2023-01-01 23:00:52 -05:00
goldengrandpa d355981041 [bsp][stm32f407-RoboMaster-C]Enable TIM5_CH1/2/3 2022-12-31 16:30:16 -05:00
褚仕成 de9db80814 [rtduino] : fix arduino_pinout and README 2022-12-30 07:51:49 -05:00
Meco Man 20a6f14e89 use PIN_IRQ_PIN_NONE to replace RT_PIN_NONE 2022-12-26 02:10:30 -05:00
Meco Man 40a24806f9 [stm32][pandora] add ap3216c sensor support 2022-12-26 02:10:30 -05:00
wdfk-prog fa7c1db768 [stm32][spic]修改SPI TX DMA中断优先级
* 原先中断优先级不生效
2022-12-24 15:12:30 -05:00
wdfk-prog db6ee55379 [STM32][common]更新rt_hw_us_delay函数,以支持设置更高延时
* 未判断设置延时数是否会溢出
2022-12-22 21:18:29 -05:00
Man, Jianting (Meco) 262392a69c
[sensor] draft new sensor-hal framework (#6746)
* [sensor] new sensor framework
针对老版本sensor框架的诸多不合理设计进行重构
之前的PR中已经重构了浮点数相关的问题
本次PR主要围绕sensor的整体架构予以重构,对过于理想化的参数和模式予以删除
* [sensor] 增加can modbus总线类型
* [stm32l745] 完善sensor对接
* [sensor] fix the onchip ID print
2022-12-21 21:24:51 -05:00
Zxy f4323f2049
[stm32f1] 对于RTC-Alarm进行添加STM32F1宏控制 (#6765)
并确认并列出已经在什么情况或板卡上进行了测试。
And confirm in which case or board has been tested. -->
STM32F103ZET6

为什么提交这份PR (why to submit this PR)
使用STM32F103ZET6的RTC的Alarm功能出现问题,按照原本的驱动代码编译会报错。

你的解决方案是什么 (what is your solution)
修改底层驱动drv_rtc.c文件,将报错的几个结构体给注释掉即可。

在什么测试环境下测试通过 (what is the test environment)
rtstudio下对STM32F103ZET6进行测试并且成功运行Alarm功能
2022-12-21 20:33:54 -05:00
螺丝松掉的人 eec9d4f595
[arduino][stm32f427-robomaster-a] : 对接RTduino (#6767)
* [arduino][stm32f427-robomaster-a] : 对接RTduino

* Update README.md

* Update pins_arduino.c

Co-authored-by: Man, Jianting (Meco) <920369182@qq.com>
2022-12-21 18:16:31 -05:00
Stanley Lwin f0ef8ada33
[bsp] [stm32F401] Enable PA11 for TIM1_CH4 (#6756) 2022-12-20 01:20:20 -05:00
螺丝松掉的人 ba2d7ba4c0
[arduino][stm32f407-robomaster-c] 对接RTduino (#6759) 2022-12-20 00:59:54 -05:00
wdfk-prog 0a6ffce446
[STM32][SPI]使用rt_hw_cpu_dcache_ops函数替换HAL库函数 (#6745)
* [STM32][SPI]使用rt_hw_cpu_dcache_ops函数替换HAL库函数

* 规范代码格式
2022-12-16 02:10:42 -05:00
wdfk-prog 63e7633246
[STM32][SPI]在H7芯片下修复时钟频率获取错误问题并添加DMA驱动 (#6741)
* [STM32][SPI]在H7芯片下修复时钟频率获取错误问题并添加DMA驱动
* H7下SPI时钟不再为外设总线时钟频率
* H7下DMA驱动需要进行CacheLine对齐
2022-12-15 01:05:56 -05:00
Man, Jianting (Meco) 99bdf978d7
[rtdef] use lower-case to define attributes (#6728)
* [rtdef] rename RT_WEAK attribute as rt_weak

* [rtdef] rename RT_USED attribute as rt_used

* [rtdef] rename RT_SECTION attribute as rt_section

* [rtdef] rename ALIGN attribute as rt_align

* [legacy] add RT_USED ALIGN RT_SECTION RT_WEAK as legacy support
2022-12-11 13:12:03 -05:00
liYony 190eda6ab0 [bug] fix tim bug 2022-12-09 23:19:18 -05:00
liYangYang e3a09b2791
[STM32][SPI]优化APBx时钟配置代码 (#6698)
* [STM32][SPI]优化APBx时钟配置代码
2022-12-06 12:52:37 -05:00
wdfk-prog db3e261bc4 添加判断当前使用定时器是否可配置为主从定时器模式 2022-12-06 00:07:57 -05:00
少年老王 12ec87d64e 修改串口V2的putc顺序
1.顺序修改回V1,保证每次都是当前数据发送完才跳出
2022-12-06 10:37:35 +08:00
liYony 575fe18ea0 some errors 2022-12-06 10:37:15 +08:00
liYony 7a49f8d920 tim_clock_get 2022-12-06 10:37:15 +08:00
liYony e9ddc36488 tim clk config fix 2022-12-06 10:36:59 +08:00
wdfk-prog aaf1abf25f [fix][stm32]修复输出高电平异常的问题 2022-12-05 20:49:28 -05:00
Meco Man dea34be06c [stm32l475-pandora] update readme 2022-12-05 20:44:34 -05:00
liYangYang 4bdca93a8d
[RTduino][STM32]为stm32l431-BearPi开发板对接RTduino软件包 (#6688) 2022-12-04 20:28:15 -05:00
guo ecf2d82159
sync branch rt-smart. (#6641)
* Synchronize the code of the rt mart branch to the master branch.
  * TTY device
  * Add lwP code from rt-smart
  * Add vnode in DFS, but DFS will be re-write for rt-smart
  * There are three libcpu for rt-smart:
    * arm/cortex-a, arm/aarch64
    * riscv64

Co-authored-by: Rbb666 <zhangbingru@rt-thread.com>
Co-authored-by: zhkag <zhkag@foxmail.com>
2022-12-03 12:07:44 +08:00
wdfk-prog 569e2ae1e8
[CAN]update struct can_filter_item and rt_can_msg (#6556)
* 修改ry命令,已便于自定义保存路径

* modified:   components/utilities/ymodem/ry_sy.c

* 修复从被动错误恢复后发送返回异常

* 修复在自动重传模式下,ACK异常阻塞线程
- 删除TX中断函数else分支。仅当RQCP位 置一才进入该中断
- 添加SCE中断函数中关于ACK_ERR的else判断。自动重传模式下会进入该判断,打断自动重传释放完成量。

* 增加对于CAN1与CAN2的SCE中断和TX中断的公共处理函数

* formatting格式化代码

* update struct can_filter_item and rt_can_msg
1. 对过滤器号和索引号结构体定义中同一名称hdr进行重命名hdr_bank和hdr_index,
以便准确区分.采用宏定义兼容以前变量名.
2. 添加接收标识rxfifo,已指明是哪个RXFIFO.

* 更正42M下的波特率

* 修复接收获取索引号错误

* 添加接收标识

* 更新注释

* 取消CANFD限制

* update struct can_filter_item and rt_can_msg
2022-11-21 21:45:51 -05:00
Meco Man 6808f48bdc [stm32] 解决Error_Handler()函数在*_msp.c文件下报错的问题
在用户头文件区增加#include <drv_common.h>即可
2022-11-21 21:31:33 -05:00
Meco Man dc5f280a9a [stm32l475-pandora] select AHT10_USING_SENSOR_DEVICE 2022-11-21 21:31:16 -05:00
lpy 8e8fcd8d25
[stm32f410][RTduino] 修改pins_arduino.c和Kconfig (#6629) 2022-11-20 21:48:39 -05:00
螺丝松掉的人 d98a4ec1b5
[arduino][f411-blackpill] 已配置cubeMX,并生成pinout文件 (#6614)
* [arduino][f411-blackpill] 已配置cubeMX,并生成pinout文件

Signed-off-by: 褚仕成 <1468559561@qq.com>

* [arduino][f411-blackpill] 完善cubeMX配置

* 编辑 Kconfig 文件

* 完善Kconfig文件中PWM的配置

* 将rtduino的配置移至Onboard Peripheral Drivers

* 使能SPI

* Update Sconscript

Signed-off-by: 褚仕成 <1468559561@qq.com>
Co-authored-by: Man, Jianting (Meco) <920369182@qq.com>
2022-11-18 20:58:32 -05:00
myshow2258 87be8fdba8 Modified bsp/stm32/libraries/HAL_Drivers/drv_usbd.c
Modified   components/drivers/usb/usbdevice/class/cdc_vcom.c
修复cdc在v1v2的serial框架下接收发送错误的问题.stm32下usbd添加更多的ep_id,以支持复合设备.
2022-11-14 23:47:49 -05:00
Meco Man 6b9bdc12a9 [sensor] use arg to replace user_data 2022-11-14 22:19:47 -05:00
lpy a6151716b2
添加STM32F410 NUCLEO RTDUINO (#6613)
* 添加STM32F410 NUCLEO RTDUINO

* 修改stm32f410 nuleco RTDUINO

* 修改stm32f410 nuleco RTDUINO

* Update Sconscript

Co-authored-by: Man, Jianting (Meco) <920369182@qq.com>
2022-11-13 23:16:52 -05:00
Meco Man e89b0e7d8a [stm32 f411] rename stm32f411-weact-blackpill 2022-11-12 02:16:42 -05:00
Meco Man c67ff54b6e [Kconfig] remove PKG_USING_SENSORS_DRIVERS and PKG_USING_TOUCH_DRIVERS 2022-11-06 23:01:37 -05:00
Man, Jianting (Meco) a24f527990
[stm32][tim/pwm] 抽出公共代码,防止日后演进出现分歧 (#6575)
* [stm32][tim/pwm] 抽出公共代码,防止日后演进出现分歧

* Update drv_tim.c
2022-11-06 22:58:39 -05:00
Meco Man ac2fb2beab [rtduino] 修正pinout_arduino文件所在Group名称 2022-11-05 10:56:36 -04:00
myshowtogo a9d8168b4d Modified bsp/stm32/libraries/HAL_Drivers/config/f4/dma_config.h
Modified   bsp/stm32/libraries/HAL_Drivers/drv_usart_v2.c
修复stm32的串口 dma配置
2022-10-30 21:19:31 -04:00
linshire 1fc558e6f8 删除对pwm_config的判断,并初始化channel 为RT_NULL 2022-10-30 13:04:07 -04:00
linshire 315c25883c [bsp] fix the return of the function(drv_pwm_control) in stm32 drv_pwm 2022-10-30 02:17:02 -04:00
linshire 14722a4853 Revert "提交stm32 bsp drv_pwm.c里面的一个小建议 (#6517)"
This reverts commit a4eb5a5399.
2022-10-28 21:07:39 -04:00
100ask-Alen a4eb5a5399
提交stm32 bsp drv_pwm.c里面的一个小建议 (#6517)
在使用stm32的pwm驱动时,发现其初始化channel的时候是根据device->channel这个值去初始化的,device->channel这个值是在pwm_configh.h里面定义设置的,又根据rtt的pwm例程,和常规习惯,应该大多数人会更喜欢设置channel=1/2/3/4,而不是在pwm_configh.h中将channel设置为TIM_CHANNEL_1/2/3/4,因此建议drv_pwm.c做出PR中的修改。

在实际开发中,因pwm_configh.h的示例均是.channel=0,又没有做出解释说明要让.channel=TIM_CHANNEL_1/2/3/4的值,容易误操作导致没有成功输出PWM,这是我在实际开发中遇到的现实问题,因而提出此建议。
2022-10-28 18:38:17 -04:00
linshire e01776ea76 将驱动文件中判断RT_USING_XXX改为BSP_USING_XXX,解决了部分框架层与驱动层的混用 2022-10-27 18:30:08 -04:00
Man, Jianting (Meco) 055267f049
[compiler] 增加SConscript依赖标志 AddDepend (#6534)
* [compiler] 增加SConscript依赖标志 AddDepend

* RT_USING_NEWLIB->RT_USING_NEWLIBC RT_USING_ARM_LIBC->RT_USING_ARMLIBC

* 删除过时的板载测试例程

* [gd32] 移除无用的反汇编文件

* [bsp]移除老旧bsp中对RT_USING_NEWLIBC的手动宏定义
2022-10-25 00:01:37 -04:00
wdfk-prog e59b6c7ab4
FIX: [bsp][stm32]CAN从ACK错误恢复后发送异常 (#6511)
* 修改ry命令,已便于自定义保存路径

* modified:   components/utilities/ymodem/ry_sy.c

* 修复从被动错误恢复后发送返回异常

* 修复在自动重传模式下,ACK异常阻塞线程
- 删除TX中断函数else分支。仅当RQCP位 置一才进入该中断
- 添加SCE中断函数中关于ACK_ERR的else判断。自动重传模式下会进入该判断,打断自动重传释放完成量。

* 增加对于CAN1与CAN2的SCE中断和TX中断的公共处理函数

* formatting格式化代码
2022-10-23 22:37:19 -04:00
ItsGettingWorse 9c6d8d96ce Update drv_usart.c
修复RX DMA 第一包收不到的bug
2022-10-22 15:11:46 -04:00
spaceman 5f7d9b3e0e
[stm32-artpi-h750]去除冗余代码 与本文件36行重复 (#6522) 2022-10-20 12:19:52 -04:00
mingmiaojing 4690ed90f1 [stm32f103-fire-arbitrary] support nandflash K9F1G08U0E && LPM init && partition create && partition read/write 2022-10-20 00:28:52 -04:00
NU-LL 6723573716 [bsp/stm32] format code 2022-10-20 11:44:34 +08:00
NU-LL b380bdf071 [bsp/stm32] upgrade to rt-thread 5.0 2022-10-20 11:44:34 +08:00
NU-LL 40aaf3e7f3 [bsp/stm32] add weact mini stm32h7xx board bsp 2022-10-20 11:44:34 +08:00
BreederBai 3a9152c5fe
[bsp/stm32] 将spi DMA传输更改为阻塞线程方式 (#6513)
* [bsp/stm32] 将spi DMA传输更改为阻塞线程方式

* Update bsp/stm32/libraries/HAL_Drivers/drv_spi.h

Co-authored-by: Man, Jianting (Meco) <920369182@qq.com>
2022-10-17 15:52:03 -04:00
liYangYang 56794960d1
[RTduino]STM32F411对接RTduino软件包 (#6524) 2022-10-16 00:28:51 -04:00
朱天龙 (Armink) d480690f77 [bsp][stm32] Update the serialv2 driver for CPU Cache. Simplified the DMA receive code. 2022-10-12 14:21:41 +08:00
Meco Man 250de80e9a [bsp][rtduino] update readme 2022-10-12 14:20:46 +08:00
Man, Jianting (Meco) ed1bcfbd7e
[rtduino][BSPs] translate readme to English (#6496) 2022-10-09 21:45:25 -04:00
YuQi 7c122cca25
[bsp][c28x] add driver for GPIO and improve pwm's driver (#6493)
1. 增加PWM模块的配置kconfig代码
2. 调整目录结构,新增c28x文件夹,将原有tms320f28379的porting移动至c28x文件夹下,通用设备驱动移动至c28x/libraries下
3. 增加gpio驱动代码以及外部中断触发驱动代码

目前已经在tms320f28379上通过测试
2022-10-08 23:24:05 -04:00
bzrobotics 560a21207e FIX: [bsp][stm32] pulse_encoder driver did not handle TIM overflow 2022-10-08 22:32:45 -04:00
Man, Jianting (Meco) f7be5fc84b
[bsp][applications][sconscript] 整理统一sconscript格式 (#6481)
* [bsp][sconscript] 整理统一sconscript格式

* update

* update
2022-10-03 10:43:08 -04:00
cy023 f741ccb400 Fix string comparison method 2022-10-01 14:00:21 -04:00
Meco Man 688b6e2014 [iar] PLATFOMR更正为'iccarm' 2022-09-29 20:58:34 -04:00
Meco Man 97c483fe35 [rtduino][readme] change title 2022-09-28 02:11:35 -04:00
Man, Jianting (Meco) c7a9481831
[rtduino] 对接STM32F412 NUCLEO (#6461) 2022-09-25 22:38:35 -04:00
YangZhongQing 1c2d05d545 RTC STM32F1 Enable PWR and BKP clocks in the same time
bsp\stm32\libraries\HAL_Drivers\drv_rtc.c在STM32F10x上有一个“RTC首次上电时BKP时钟没使能”的问题。

STM32F10x要求:
写RTC Domain and RTC registers之前需要__HAL_RCC_BKP_CLK_ENABLE(详见:stm32f1xx_hal_rtc.c里面的##### Backup Domain Access #####)

问题分析:
1、RTC首次上电时:由于HAL_RTC_Init初始化之前没有使能BKP时钟,所以对RTC registers的初始化无效。
2、然后用date命令设置时间,调用到set_rtc_time_stamp也没有__HAL_RCC_BKP_CLK_ENABLE,所以HAL_RTCEx_BKUPWrite写的值无法真正永存于BKP,重启后就丢失。
最终导致:对于RTC首次上电的情况,每次重启后RTC_BKP_DR1里的值都不是BKUP_REG_DATA,导致永远无法调用到rt_rtc_f1_bkp_update()去使能BKP时钟。

解决办法:
参考STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\RTC\Calendar\main.c里面的RTC_Configuration()同时打开RCC_APB1Periph_PWR和RCC_APB1Periph_BKP
2022-09-23 21:04:35 -04:00
BreederBai 61e1e31ca9
[bsp/stm32] 简化drv_usart中的DMA接收逻辑 (#6357) 2022-09-22 14:13:57 +08:00
Meco Man 560166477e [stm32f401 nucleo] update main.c revert blinking LED 2022-09-20 10:33:12 -04:00
liyangyang f71a287a68 [RTduino]更新stm32f469的对接文件 2022-09-20 10:32:56 -04:00
liyangyang 4e9786cdab [RTduino]stm32f103-blue-pill更新对接文件 2022-09-19 23:36:22 -04:00
Man, Jianting (Meco) 8d3c1f7008
[rtduino]重新整理pinout (#6445)
* [rtduino][stm32l475-pandora] 重新整理pinout

* [rtduino][bluepill] 整理pinout

* [rtduino][stm32-f401nucleo]整理pinout

* [rtduino][stm32-pandora] 整理pinout

* [rtduino][stm32f072]整理pinout
2022-09-18 22:14:35 -04:00
liyangyang dc6b9fde98 [RTduino]stm32f401-st-nucleo 更新对接文件 2022-09-18 10:05:36 -04:00