diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522164844535.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522164844535.png new file mode 100644 index 0000000000000000000000000000000000000000..5529750c45997ef0ae01a2c54a86aac1d562e188 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522164844535.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165417889.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165417889.png new file mode 100644 index 0000000000000000000000000000000000000000..8a23959d9d595ab4cf74814ab03da889a340a843 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165417889.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165430018.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165430018.png new file mode 100644 index 0000000000000000000000000000000000000000..bc715b343b7072d2b15826b2d06f8428636ca5df Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165430018.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165518724.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165518724.png new file mode 100644 index 0000000000000000000000000000000000000000..e830916c9f482f1dea535116db96b07f31bad12d Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165518724.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165534857.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165534857.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe421f879cf57e52b4ddead210ce947da8c3308 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165534857.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165622746.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165622746.png new file mode 100644 index 0000000000000000000000000000000000000000..54029401e3418b05165673d2508b4aaf06380e7c Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165622746.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165647932.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165647932.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6c13d33de514333be1ff0a88794eee58fea1ed Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522165647932.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170306522.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170306522.png new file mode 100644 index 0000000000000000000000000000000000000000..809a2fb5bcf3e2dc906d24e26be31459ca5f6c59 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170306522.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170818515.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170818515.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fd0a007b3e496ae1a345ccdd7f58aaabee2c12 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170818515.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170917676.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170917676.png new file mode 100644 index 0000000000000000000000000000000000000000..e39ddfa16f964e7f13d973b8d633289719ce18d1 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170917676.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170953318.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170953318.png new file mode 100644 index 0000000000000000000000000000000000000000..7dda8ca51a912e70ded9ce584c3076ecaced24c7 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522170953318.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171025579.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171025579.png new file mode 100644 index 0000000000000000000000000000000000000000..3358f1d255fa7f09703f09cf075714c5b8ff26a5 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171025579.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171134404.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171134404.png new file mode 100644 index 0000000000000000000000000000000000000000..2af4ee3ee08659e2c6989e780fc7c5868bd2ca7b Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171134404.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171146522.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171146522.png new file mode 100644 index 0000000000000000000000000000000000000000..2aaca493b9f18ec05816b9ca4e5cfcd867009269 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171146522.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171227267.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171227267.png new file mode 100644 index 0000000000000000000000000000000000000000..9b521d696df31fa87df656f07446771c33dc5a91 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171227267.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171403834.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171403834.png new file mode 100644 index 0000000000000000000000000000000000000000..3b560cc7048f8923e689a22fe4a4b0230e9de95d Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171403834.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171643316.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171643316.png new file mode 100644 index 0000000000000000000000000000000000000000..ed93e3c3de6d808ff2c49f59068f4196e1f8a916 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171643316.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171651244.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171651244.png new file mode 100644 index 0000000000000000000000000000000000000000..ed93e3c3de6d808ff2c49f59068f4196e1f8a916 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171651244.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171746589.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171746589.png new file mode 100644 index 0000000000000000000000000000000000000000..75c63e942efe599e5d1ddf09c1bd2428019b196e Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171746589.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171817667.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171817667.png new file mode 100644 index 0000000000000000000000000000000000000000..57ef235c32726a290afd80f3bf234c001a5a63f7 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171817667.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171920037.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171920037.png new file mode 100644 index 0000000000000000000000000000000000000000..60d28a832e69fe8e18b8b67f831189df35f68cfb Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171920037.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171937355.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171937355.png new file mode 100644 index 0000000000000000000000000000000000000000..f2752a251f321db41cf81d543fece4f29231c0de Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522171937355.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172012723.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172012723.png new file mode 100644 index 0000000000000000000000000000000000000000..26f612dc055c7a5c1670c423c10639fbe162a23f Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172012723.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172029923.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172029923.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7280863aeeb3fa60bc3d26ca6f1ba48d6aa048 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172029923.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172147419.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172147419.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb32336c409d7eb360aee19049a85dcd9beea1a Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172147419.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172205086.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172205086.png new file mode 100644 index 0000000000000000000000000000000000000000..4369711d20e28691f098f5fc17f30367fe6e78c9 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172205086.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172253996.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172253996.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc99753deca71d82c3d1a30088a48c80316987e Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172253996.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172409595.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172409595.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc3a5403485fa5a7d5086bcf9a4099da3d72d2d Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172409595.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172433379.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172433379.png new file mode 100644 index 0000000000000000000000000000000000000000..490dc6471a3a9406a7d0d2263e36a00abf75a86d Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172433379.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172544515.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172544515.png new file mode 100644 index 0000000000000000000000000000000000000000..d5e2b72171a2a774cd9bdeee2648809311d506ab Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172544515.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172556280.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172556280.png new file mode 100644 index 0000000000000000000000000000000000000000..565cc312feb74aeb99c287822ab4bf4b263414e4 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/image-20240522172556280.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC2MCAQWbnAABUDh5-wwY467.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC2MCAQWbnAABUDh5-wwY467.png new file mode 100644 index 0000000000000000000000000000000000000000..50251d8fe27a0af75b2f8b5012012a2c2dc5cf99 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC2MCAQWbnAABUDh5-wwY467.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC2RKAYrKwAAB3byO1m44230.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC2RKAYrKwAAB3byO1m44230.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7cd661b1bb90fe0260b19d22681ccf0af93c59 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC2RKAYrKwAAB3byO1m44230.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC3w2AZJYNAACUNHzy6F0949.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC3w2AZJYNAACUNHzy6F0949.png new file mode 100644 index 0000000000000000000000000000000000000000..4567c7cd4b667953c8a7664d6f75397fe7888345 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgZomZC3w2AZJYNAACUNHzy6F0949.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgaomZC2BqAUjxkAACRjM-WtCg641.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgaomZC2BqAUjxkAACRjM-WtCg641.png new file mode 100644 index 0000000000000000000000000000000000000000..3388ff5bc1178aeedfeb5dc3d71750cf15e76e29 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgaomZC2BqAUjxkAACRjM-WtCg641.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgaomZC2ryAMYlZAACbAzxkRZ0927.png b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgaomZC2ryAMYlZAACbAzxkRZ0927.png new file mode 100644 index 0000000000000000000000000000000000000000..595d4dd834acc13ac9880f8323dd3d34f3f0bb35 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/picture/wKgaomZC2ryAMYlZAACbAzxkRZ0927.png differ diff --git "a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/\347\221\236\350\220\250VisionBoard\345\274\200\345\217\221\345\256\236\350\267\265\346\214\207\345\215\227.md" "b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/\347\221\236\350\220\250VisionBoard\345\274\200\345\217\221\345\256\236\350\267\265\346\214\207\345\215\227.md" index 78f2a7637c347a37c84cff010c0a86e199de9083..08d99d380df25ae4f3accb2ed25e989314b97fc1 100644 --- "a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/\347\221\236\350\220\250VisionBoard\345\274\200\345\217\221\345\256\236\350\267\265\346\214\207\345\215\227.md" +++ "b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/\347\221\236\350\220\250VisionBoard\345\274\200\345\217\221\345\256\236\350\267\265\346\214\207\345\215\227.md" @@ -6,16 +6,16 @@ | **一、RA8D1 Vision Board上的UART实践** | **刘建华ou** | | **二、RA8D1 Vision Board上的GPIO实践** | **朱俊杰** | | **三、RA8D1 Vision Board上的USB实践** | **Mak&&湛政** | -| **四、RA8D1 Vision Board上的HWTimer实践** | **TODO** | +| **四、RA8D1 Vision Board上的HWTimer实践** | **石工** | | **五、RA8D1 Vision Board上的SDHC实践** | **Jisheng Zhang** | | **六、RA8D1 Vision Board上的ADC实践** | **侯泽华** | | **七、RA8D1 Vision Board上的DAC实践** | **陈妙聪** | | **八、RA8D1 Vision Board上的 SPI 实践** | **谢小龙** | | **九、RA8D1 Vision Board上的PWM实践** | **丁振富** | -| **十、RA8D1 Vision Board上的RTC实践** | **TODO** | +| **十、RA8D1 Vision Board上的RTC实践** | **欧小龙** | | **十一、RA8D1 Vision Board的FLASH实践** | **叶高瑞** | | **十二、RA8D1 Vision Board上的WDT实践** | **高高** | -| **十三、RA8D1 Vision Board上的IIC实践** | **TODO** | +| **十三、RA8D1 Vision Board上的IIC实践** | **欧小龙** | | **十四、RA8D1 Vision Board上QSPI-Flash实践** | **刘万涛&&袁亨&&王凯** | | **十五、RA8D1 Vision Board上的RW007实践** | **许思维&&尹向旭** | | **十六、LCD(mipi)+LVGL(适配V8.x版本)** | **张海良** | @@ -656,9 +656,134 @@ USB实践rtthread studio 工程仓库地址 :https://gitee.com/richarddestiny/ [RT-Thread-【RA8D1-Vision Board】 RA8D1 Vision Board上的USB实践RT-Thread问答社区 - RT-Thread](https://club.rt-thread.org/ask/article/46f7ac02efd749ed.html) -# 四、RA8D1 Vision Board上的HWTimer实践 +# 四、RA8D1 Vision Board上的HWTimer实践(石工) -TODO +## 1. 开发环境 + +RT-Thread Studio:v2.2.7 + +开发板:RA8D1 Vision Board开发板 + +MCU:R7FA8D1BHEC337AS02 + +## 2. 步骤说明 + +### 2.1 基本介绍 + +#### 定时器简介 + +硬件定时器一般有 2 种工作模式,定时器模式和计数器模式。不管是工作在哪一种模式,实质都是通过内部计数器模块对脉冲信号进行计数。下面是定时器的一些重要概念。 + +1. **计数器模式:** 对外部输入引脚的外部脉冲信号计数。 +2. **定时器模式:** 对内部脉冲信号计数。定时器常用作定时时钟,以实现定时检测,定时响应、定时控制。 +3. **计数器:** 计数器可以递增计数或者递减计数。16位计数器的最大计数值为65535,32位的最大值为4294967295。 +4. **计数频率:** 定时器模式时,计数器单位时间内的计数次数,由于系统时钟频率是定值,所以可以根据计数器的计数值计算出定时时间,定时时间 = 计数值 / 计数频率。例如计数频率为 1MHz,计数器计数一次的时间则为 1 / 1000000, 也就是每经过 1 微秒计数器加一(或减一),此时 16 位计数器的最大定时能力为 65535 微秒,即 65.535 毫秒。 + +  本定时器设备框架内部会自动处理硬件定时器超时的问题,例如16位定时器在1MHz的频率下最大只能维持65.535ms。但是在本定时器框架下,用户可以将定时器的溢出时间设置为例如500ms,框架内部会自动处理硬件溢出问题。当时间达到500ms后,框架会调用用户预先设置好的回调函数。 + +| 函数 | 描述 | +| :------------------------ | :--------------- | +| rt_device_find | 查找设备 | +| rt_device_open | 打开设备 | +| rt_device_set_rx_indicate | 设置超时回调函数 | +| rt_device_control | 设置定时器模式 | +| rt_device_write | 设置定时器参数 | +| rt_device_read | 获取定时器当前值 | + +### 2.2 FS配置 + +1.双击RA Smart Coniuator打开FS配置工具 + +![image.png](./picture/wKgZomZC2MCAQWbnAABUDh5-wwY467.png) + +2.按照下图配置定时器参数 + +![image.png](./picture/wKgaomZC2BqAUjxkAACRjM-WtCg641.png) + +3.点击 “Stacks” -> “New Stack” -> “Timers” -> “Timers,General PWM(r_gpt)”配置GPT如下图 + +![image.png](./picture/wKgaomZC2ryAMYlZAACbAzxkRZ0927.png) + +4.点击Generate Project Content 生成配置代码 + +![image.png](./picture/wKgZomZC2RKAYrKwAAB3byO1m44230.png) + +### 2.3 代码实现 + +#### 2.3.1 配置代码 + +```c +int hwtimer_sample(void) +{ + rt_err_t ret = RT_EOK; + rt_hwtimerval_t timeout_s; + rt_device_t hw_dev = RT_NULL; + rt_hwtimer_mode_t mode; + rt_uint32_t freq = 1875000; /* 1Mhz */ + + hw_dev = rt_device_find(HWTIMER_DEV_NAME); + if (hw_dev == RT_NULL) + { + rt_kprintf("hwtimer sample run failed! can't find %s device!\n", HWTIMER_DEV_NAME); + return -RT_ERROR; + } + + ret = rt_device_open(hw_dev, RT_DEVICE_OFLAG_RDWR); + if (ret != RT_EOK) + { + rt_kprintf("open %s device failed!\n", HWTIMER_DEV_NAME); + return ret; + } + + rt_device_set_rx_indicate(hw_dev, timeout_cb); + + rt_device_control(hw_dev, HWTIMER_CTRL_FREQ_SET, &freq); + + mode = HWTIMER_MODE_PERIOD; + ret = rt_device_control(hw_dev, HWTIMER_CTRL_MODE_SET, &mode); + if (ret != RT_EOK) + { + rt_kprintf("set mode failed! ret is :%d\n", ret); + return ret; + } + + /* Example Set the timeout period of the timer */ + timeout_s.sec = 1; /* secend */ + timeout_s.usec = 0; /* microsecend */ + if (rt_device_write(hw_dev, 0, &timeout_s, sizeof(timeout_s)) != sizeof(timeout_s)) + { + rt_kprintf("set timeout value failed\n"); + return -RT_ERROR; + } + + /* read hwtimer value */ + rt_device_read(hw_dev, 0, &timeout_s, sizeof(timeout_s)); + rt_kprintf("Read: Sec = %d, Usec = %d\n", timeout_s.sec, timeout_s.usec); + + return ret; +} +MSH_CMD_EXPORT(hwtimer_sample, hwtimer sample); +``` + +#### 2.3.2 回调函数 + +```c +static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size) +{ + rt_kprintf("this is hwtimer timeout callback fucntion!\n"); + rt_kprintf("tick is :%d !\n", rt_tick_get()); + + return RT_EOK; +} +``` + +#### 2.3.3 测试验证 + +![image.png](./picture/wKgZomZC3w2AZJYNAACUNHzy6F0949.png) + +## 原文链接 + +[【Vision Board创客营连载体验】HWTIMER设备体验 - RT-Thread论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)](https://bbs.elecfans.com/jishu_2429456_1_1.html) # 五、RA8D1 Vision Board上的SDHC实践(Jisheng Zhang) @@ -1383,9 +1508,205 @@ void hal_entry(void) [RT-Thread-[Vision Board创客营\] PWM模块实践RT-Thread问答社区 - RT-Thread](https://club.rt-thread.org/ask/article/d83fe3f4b7c0d9e1.html) -# 十、RA8D1 Vision Board上的RTC实践 +# 十、RA8D1 Vision Board上的RTC实践(欧小龙) -TODO +## 1. 开发环境 + +RT-Thread Studio:v2.2.7 + +开发板:RA8D1 Vision Board 开发板 + +MCU:R7FA8D1BHEC337AS02 + +## 2. 步骤说明 + +### 2.1 基本介绍 + +#### 2.1.1 RA8D1 RTC 简介 + +RA8D1 的 RTC(Real Time Clock)外设,实质是一个掉电后还继续运行的定时器。从定时器的角度来说,相对于 GPT 外设,要简单很多 ,只有计时和触发中断以及输入捕获的功能。RTC 外设的特别之处并不在于它的定时功能,而在于它掉电还继续运行的特性。 + +![image-20240522164844535](./picture/image-20240522164844535.png) + +#### 2.1.2 RT-Thread的RTC简介 + +RTC (Real-Time Clock)实时时钟可以提供精确的实时时间,它可以用于产生年、月、日、时、分、秒等信息。目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。有些时钟芯片为了在主电源掉电时还可以工作,会外加电池供电,使时间信息一直保持有效。 + +在开启 RTC 设备框架以及 RTC 驱动之后,应用程序通过 RT-Thread 提供的 RTC 设备管理接口来访问RTC 硬件,相关接口如下所示: + +| 函数 | 描述 | +| -------------- | ------------------------------------- | +| rt_device_find | 根据 RTC 设备名称查找设备获取设备句柄 | +| set_date | 设置日期,年、月、日(当地时区) | +| set_time | 设置时间,时、分、秒(当地时区) | + +另外,alarm 闹钟功能是基于 RTC 设备实现的,根据用户设定的闹钟时间,当时间到时触发 alarm 中断, + +执行闹钟事件。 + +alarm 组件提供的接口如下所示: + +| 函数 | 描述 | +| ---------------- | ---------------------- | +| rt_alarm_create | 创建闹钟 | +| rt_alarm_start | 启动闹钟 | +| rt_alarm_stop | 停止闹钟 | +| rt_alarm_delete | 删除闹钟 | +| rt_alarm_control | 控制 alarm 设备 | +| rt_alarm_dump | 打印显示设置的闹钟信息 | + +关于 RTC 的更多资料请参看 RT-Thread 官方手册: + +https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/rtc/rtc + +### 2.2 RA8D1 RTC配置 + +接下来配置 RTC,只需要简单配置就可使用。双击工程中的 RA Smart Configurator 图标,第一次打开需要配置正确的 FSP 安装路径。 + +![image-20240522165417889](./picture/image-20240522165417889.png) + +![image-20240522165430018](./picture/image-20240522165430018.png) + +- **FSP 配置RTC** + +1.添加RTC设备 + +![image-20240522165518724](./picture/image-20240522165518724.png) + +2.配置RTC + +![image-20240522165534857](./picture/image-20240522165534857.png) + +RT-Thread 中只是用了一个 RTC 设备,所以没有对其进行编号,如果是新创建的 RTC 设备需要注意name 字段,在驱动中默认使用的是 g_rtc,不然编译会提示没有相应的设备,修改 Callback 为rtc_callback。 + +- **配置RTC和alarm组件** + +打开RTC硬件 + +![image-20240522165622746](./picture/image-20240522165622746.png) + +同时打开alarm组件 + +![image-20240522165647932](./picture/image-20240522165647932.png) + +### 2.3 代码实现 + +首先设置了年月日时分秒信息,然后获取当前时间,接着设置一个 alarm,值得注意的是,alarm 是基于RTC 的,因此需要先将 RTC 初始化,然后才能开启 alarm 事件。核心代码如下: + +```c +#include +#include +#include +#define DBG_LEVEL DBG_LOG +#define DBG_SECTION_NAME "rtc" +#include +#define RTC_NAME "rtc" + +rt_sem_t rtc_init_sem = RT_NULL; + +static int uesr_rtc_init(void) +{ + rt_err_t ret = RT_EOK; + time_t now; + rt_device_t device = RT_NULL; + + /*创建初始化完成信号量*/ + rtc_init_sem = rt_sem_create("rtc init flag", 0, 0); + if(rtc_init_sem == RT_NULL) + { + rt_kprintf("rtc sem init failed!"); + return RT_ERROR; + } + + /*寻找设备*/ + device = rt_device_find(RTC_NAME); + if (!device) + { + rt_kprintf("find %s failed!", RTC_NAME); + return RT_ERROR; + } + + /*初始化 RTC 设备*/ + if(rt_device_open(device, 0) != RT_EOK) + { + rt_kprintf("open %s failed!", RTC_NAME); + return RT_ERROR; + } + + /* 设置日期 */ + ret = set_date(2024, 05, 21); + if (ret != RT_EOK) + { + rt_kprintf("set RTC date failed\n"); + return ret; + } + + /* 设置时间 */ + ret = set_time(20, 57, 50); + if (ret != RT_EOK) + { + rt_kprintf("set RTC time failed\n"); + return ret; + } + rt_sem_release(rtc_init_sem); + + /* 获取时间 */ + now = time(RT_NULL); + rt_kprintf("RTC device init success,now time is %s\n", ctime(&now)); + return ret; +} +/*作为用户 APP 初始化*/ +INIT_APP_EXPORT(uesr_rtc_init); + +void user_alarm_callback(rt_alarm_t alarm, time_t timestamp) +{ + time_t now = timestamp; + rt_kprintf("The alarm clock rings, now time is %s\n", ctime(&now)); + rt_alarm_stop(alarm); +} + +void alarm_test(void) +{ + if(rt_sem_trytake(rtc_init_sem) != RT_EOK) + { + rt_kprintf("please init rtc first"); + return ; + } + + struct rt_alarm_setup setup; + struct rt_alarm * alarm = RT_NULL; + static time_t now; + struct tm p_tm; + if (alarm != RT_NULL) + return; + /*获取当前时间戳,并把下一秒时间设置为闹钟时间 */ + now = time(NULL) + 5; + gmtime_r(&now,&p_tm); + setup.flag = RT_ALARM_SECOND; + setup.wktime.tm_year = p_tm.tm_year; + setup.wktime.tm_mon = p_tm.tm_mon; + setup.wktime.tm_mday = p_tm.tm_mday; + setup.wktime.tm_wday = p_tm.tm_wday; + setup.wktime.tm_hour = p_tm.tm_hour; + setup.wktime.tm_min = p_tm.tm_min; + setup.wktime.tm_sec = p_tm.tm_sec; + alarm = rt_alarm_create(user_alarm_callback, &setup); + if(RT_NULL != alarm) + { + rt_alarm_start(alarm); + } +} +/*export msh cmd*/ +MSH_CMD_EXPORT(alarm_test,a alarm test); +``` + +### 2.4 测试验证 + +编译下载,调试信息如下: + +![image-20240522170306522](./picture/image-20240522170306522.png) + +从以上打印信息可以看出,rtc 已经使能,然后使用 MSH 命令‘alarm_test’即可使能 RTC 线程,并且执行相应的事件。 # 十一、RA8D1 Vision Board的FLASH实践(叶高瑞) @@ -1688,9 +2009,195 @@ MSH_CMD_EXPORT(wdt_sample_v2, wdt sample); [RT-Thread-[Vision Board创客营\]WDT实践之配置、issue、PR一条龙RT-Thread问答社区 - RT-Thread](https://club.rt-thread.org/ask/article/42c76248a13a5e8c.html) -# 十三、RA8D1 Vision Board上的IIC实践 +# 十三、RA8D1 Vision Board上的IIC实践(欧小龙) + +## 1. 开发环境 + +RT-Thread Studio:v2.2.7 + +开发板:RA8D1 Vision Board 开发板 + +MCU:R7FA8D1BHEC337AS02 + +## 2. 步骤说明 + +### 2.1 RA8D1 I2C简介 + +I2C 通讯协议(Inter-Integrated Circuit)是由 Philips 公司开发的,由于它引脚少,硬件实现简单,可扩展性强, 不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。 + +RA8D1 有多个 I2C 外设,它们的 I2C 通讯信号引出到不同的 GPIO 引脚上,使用时必须配置到这些指定的引脚,其功能框图如下图所示。 + +![image-20240522170818515](./picture/image-20240522170818515.png) + +### 2.2 OLED简介 + +OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。 + +LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示,OLED 效果要来得好一些。以目前的技术, OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。 + +![image-20240522170917676](./picture/image-20240522170917676.png) + +OLED 显示模块有以下特点: + +1)模块有单色和双色两种可选,单色为纯蓝色,而双色则为黄蓝双色。 + +2)尺寸小,显示尺寸为 0.96 寸,而模块的尺寸仅为 27mm*26mm 大小。 + +3)高分辨率,该模块的分辨率为 128*64。 + +4)多种接口方式,该模块提供了总共 5 种接口包括:6800、 8080 两种并行接口方式、3 线或 4 线的串行 SPI 接口方式、 IIC 接口方式(只需要 2 根线就可以控制 OLED) +![image-20240522170953318](./picture/image-20240522170953318.png) + +5)不需要高压,直接接 3.3V 就可以工作了。 + +本文将介绍基于 I2C 接口的 OLED 显示。 + + + +I2C 总线协议允许数据和命令在设备间的通讯。 + +![image-20240522171134404](./picture/image-20240522171134404.png) + +1.主设备开始数据通讯通过开始条件,开始条件的定义如下图。开始条件发生在 SCL 高电平期间,SDA 产生一个下降沿的跳变。 + + + +![image-20240522171146522](./picture/image-20240522171146522.png) + +2.从地址紧跟着开始信号,用于设备从设备。对于 SSD1306 来说,从地址可能是“b0111100”或者“b0111101”。通过改变“SA0 位”为 0 或 1,(D/C 引脚作为 SA0)。 + +3.写模式发生在 R/W#位是低电平。 + +4.应答信号在接收到一个字节的数据后有从设备产生,包括从地址和 R/W#位,参考下面关于应答信号的图示。应答信号定义为在 SCL 时钟周期的高电平期间 SDA 拉低。 + +![image-20240522171227267](./picture/image-20240522171227267.png) + +5.在从地址发送结束后,不管是控制字节还是数据姐姐都可以发送通过 SDA 线。一个控制字节主要包括 Co位和 D/C#位在六个 0 后: + +A. 如果 Co 位为低电平,发送的后续信息只能是数据字节。 + +B. D/C#位决定下一个数据字节是数据还是命令字节,如果 D/C#字节设置为低电平,这意味着下一个字节是命令字节,如果 D/C#为是高电平,下一个数据字节是数据字节,将被存储在 GDDRAM 中,GDDRAM 的列地址指针在每一个数据写之后自加一。 + +6.应答为在接收到一个数据字节或只命令字节后产生。 + +7.写模式在接受到停止信号之后结束。停止信号发生在 SCL 高点平期间 SDA 的上升沿,作为停止信号。 + +### 2.3 RT-Thread的I2C简介 + +I2C(Inter Integrated Circuit)总线是 PHILIPS 公司开发的一种半双工、双向二线制同步串行总线。I2C 总 + +线传输数据时只需两根信号线,一根是双向数据线 SDA(serial data),另一根是双向时钟线 SCL(serial clock)。 + +I2C 总线允许同时有多个主设备存在,每个连接到总线上的器件都有唯一的地址,主设备启动数据传输并产 + +生时钟信号,从设备被主设备寻址,同一时刻只允许有一个主设备。如下图所示: + +![image-20240522171403834](./picture/image-20240522171403834.png) + +一般情况下 MCU 的 I2C 器件都是作为主机和从机通讯,在 RT-Thread 中将 I2C 主机虚拟为 I2C 总线设备,I2C 从机通过 I2C 设备接口和 I2C 总线通讯,相关接口如下所示: + +| 函数 | 描述 | +| --------------- | ----------------------------------------- | +| rt_device_find | 根据 I2C 总线设备名称查找设备获取设备句柄 | +| rt_i2c_transfer | 传输数据 | + +关于 I2C 更详细的内容,请参看官方手册: + +https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/i2c/i2c + +### 2.4 硬件I2C + +#### 2.4.1 硬件I2C硬件连接 + +![image-20240522171643316](./picture/image-20240522171643316.png) + +笔者这里使用的 I2C1,即 P511 和 P512。 + +#### 2.4.2 RA8D1 I2C配置 + +接下来配置 I2C,只需要简单配置就可使用。双击工程中的 RA Smart Configurator 图标,第一次打开需要配置正确的 FSP 安装路径。 + +![image-20240522171746589](./picture/image-20240522171746589.png) + +- FSP配置I2C + +1.配置 I2C 对应的引脚 + +首先依次点击 “Pins” -> “Peripherals” -> “IIC” ,配置为 I2C,对应的引脚为 P511,P512。如下图所示。 + +![image-20240522171817667](./picture/image-20240522171817667.png) + +2.配置 I2C 参数 + +在 FSP 配置界面里面我们依次点击 “Stacks”-> “New Stack”-> “Connectivity”-> “I2C Master(r_iic_master) ” 来配置 I2C 模块。 + +![image-20240522171920037](./picture/image-20240522171920037.png) + +然后配置对应的参数。 + +![image-20240522171937355](./picture/image-20240522171937355.png) + +配置完成之后可以按下快捷键“Ctrl + S”保存, 最后点右上角的 “Generate Project Content” 按钮,让软件自动生成配置代码即可。 + +- **配置I2C接口** + +然后打开对应的 I2C 接口。 + +![image-20240522172012723](./picture/image-20240522172012723.png) + +接下来就是配置 OLED 驱动,笔者这里使用的 SSD1306 的软件包。 + +![image-20240522172029923](./picture/image-20240522172029923.png) + +以上参数默认即可,笔者这里还使用了 SSD1306 的 sample。 + +### 2.5 硬件I2C测试验证 + +编译下载,然后在终端输入“ssd1306_TestAll”即可进行测试。 + +![image-20240522172147419](./picture/image-20240522172147419.png) + +正常情况下,OLED 将会点亮。 + +![image-20240522172205086](./picture/image-20240522172205086.png) + +### 2.6 软件I2C + +#### 2.6.1 硬件连接 + +![image-20240522172253996](./picture/image-20240522172253996.png) + +笔者这里使用 P508 和 P509。 + +#### 2.6.2 RA8D1 I2C配置 + +接下来配置 I2C,FSP 默认即可。 + +- **RT-Thread Studio配置I2C** + +然后打开对应的 I2C。 + +![image-20240522172409595](./picture/image-20240522172409595.png) + +配置对应的 pin 为 P508 和 P509。 + +接下来就是配置 OLED 驱动,笔者这里使用的 SSD1306 的软件包。 + +![image-20240522172433379](./picture/image-20240522172433379.png) + +以上参数默认即可,笔者这里还使用了 SSD1306 的 sample。 + +### 2.6 软件I2C测试验证 + +编译下载,然后在终端输入“ssd1306_TestAll”即可进行测试 + +![image-20240522172544515](./picture/image-20240522172544515.png) + +正常情况下,OLED 将会点亮。 + +![image-20240522172556280](./picture/image-20240522172556280.png) + -TODO # 十四、RA8D1 Vision Board上QSPI-Flash实践