diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\344\275\234\344\270\232/\347\254\254\344\270\200\345\244\251\344\275\234\344\270\232.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\344\275\234\344\270\232/\347\254\254\344\270\200\345\244\251\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\344\275\234\344\270\232/\347\254\254\344\270\211\345\244\251\344\275\234\344\270\232.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\344\275\234\344\270\232/\347\254\254\344\270\211\345\244\251\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..8ea301807e2e7c71e1f8cd79ddfc0b0eacad57e6 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\344\275\234\344\270\232/\347\254\254\344\270\211\345\244\251\344\275\234\344\270\232.md" @@ -0,0 +1,647 @@ +```C +/* + * 信号量学习 + * 创建了一个动态信号量,初始化两个线程,线程1在count每计数10次时, + * 发送一个信号量,线程2在接收信号量后,对number进行加1操作 + */ +#include + +#define THREAD_PRIORITY 25 +#define THREAD_TIMESLICE 5 + +/* 指向信号量的指针 */ +static rt_sem_t dynamic_sem = RT_NULL; + +ALIGN(RT_ALIGN_SIZE) +#endif +static char thread1_stack[1024]; +static struct rt_thread thread1; +static void rt_thread1_entry(void *parameter) +{ + static rt_uint8_t count = 0; + + while (1) + { + if (count <= 100) + { + count++; + } + else + return; + + /* count每计数10次,就释放一次信号量 */ + if (0 == (count % 10)) + { + rt_kprintf("thread1 release a dynamic semaphore.\n"); + rt_sem_release(dynamic_sem); + } + } +} + +ALIGN(RT_ALIGN_SIZE) + +static char thread2_stack[1024]; +static struct rt_thread thread2; +static void rt_thread2_entry(void *parameter) +{ + static rt_err_t result; + static rt_uint8_t number = 0; + while (1) + { + /* 永久方式等待信号量,获取到信号量,则执行number自加的操作 */ + result = rt_sem_take(dynamic_sem, RT_WAITING_FOREVER); + if (result != RT_EOK) + { + rt_kprintf("thread2 take a dynamic semaphore, failed.\n"); + rt_sem_delete(dynamic_sem); + return; + } + else + { + number++; + rt_kprintf("thread2 take a dynamic semaphore. number = %d\n", number); + } + } +} + +/* 信号量示例的初始化 */ +int semaphore_sample() +{ + /* 创建一个动态信号量,初始值是0 */ + dynamic_sem = rt_sem_create("dsem", 0, RT_IPC_FLAG_PRIO); + if (dynamic_sem == RT_NULL) + { + rt_kprintf("create dynamic semaphore failed.\n"); + return -1; + } + else + { + rt_kprintf("create done. dynamic semaphore value = 0.\n"); + } + + rt_thread_init(&thread1, + "thread1", + rt_thread1_entry, + RT_NULL, + &thread1_stack[0], + sizeof(thread1_stack), + THREAD_PRIORITY, THREAD_TIMESLICE); + + rt_thread_startup(&thread1); + + rt_thread_init(&thread2, + "thread2", + rt_thread2_entry, + RT_NULL, + &thread2_stack[0], + sizeof(thread2_stack), + THREAD_PRIORITY - 1, THREAD_TIMESLICE); + + rt_thread_startup(&thread2); + + return 0; +} + +/* 导出到 msh 命令列表中 */ +MSH_CMD_EXPORT(semaphore_sample, semaphore sample); + +``` + +```c +/* + * 互斥量学习 + * 互斥锁是一种保护共享资源的方法。当一个线程拥有互斥锁的时候, + * 可以保护共享资源不被其他线程破坏。线程1对2个number分别进行加1操作 + * 线程2也会对2个number分别进行加1操作。使用互斥量保证2个number值保持一致 + */ +#include + +#define THREAD_PRIORITY 8 +#define THREAD_TIMESLICE 5 + +/* 指向互斥量的指针 */ +static rt_mutex_t dynamic_mutex = RT_NULL; +static rt_uint8_t number1, number2 = 0; + +ALIGN(RT_ALIGN_SIZE) + +static char thread1_stack[1024]; +static struct rt_thread thread1; +static void rt_thread_entry1(void *parameter) +{ + while (1) + { + /* 线程1获取到互斥量后,先后对number1、number2进行加1操作,然后释放互斥量 */ + rt_mutex_take(dynamic_mutex, RT_WAITING_FOREVER); + number1++; + rt_thread_mdelay(10); + number2++; + rt_mutex_release(dynamic_mutex); + } +} + +ALIGN(RT_ALIGN_SIZE) + +static char thread2_stack[1024]; +static struct rt_thread thread2; +static void rt_thread_entry2(void *parameter) +{ + while (1) + { + /* 线程2获取到互斥量后,检查number1、number2的值是否相同,相同则表示mutex起到了锁的作用 */ + rt_mutex_take(dynamic_mutex, RT_WAITING_FOREVER); + if (number1 != number2) + { + rt_kprintf("not protect.number1 = %d, mumber2 = %d \n", number1, number2); + } + else + { + rt_kprintf("mutex protect ,number1 = mumber2 is %d\n", number1); + } + + number1++; + number2++; + rt_mutex_release(dynamic_mutex); + + if (number1 >= 50) + return; + } +} + +/* 互斥量示例的初始化 */ +int mutex_sample(void) +{ + /* 创建一个动态互斥量 */ + dynamic_mutex = rt_mutex_create("dmutex", RT_IPC_FLAG_PRIO); + if (dynamic_mutex == RT_NULL) + { + rt_kprintf("create dynamic mutex failed.\n"); + return -1; + } + + rt_thread_init(&thread1, + "thread1", + rt_thread_entry1, + RT_NULL, + &thread1_stack[0], + sizeof(thread1_stack), + THREAD_PRIORITY, THREAD_TIMESLICE); + + rt_thread_startup(&thread1); + + rt_thread_init(&thread2, + "thread2", + rt_thread_entry2, + RT_NULL, + &thread2_stack[0], + sizeof(thread2_stack), + THREAD_PRIORITY - 1, THREAD_TIMESLICE); + rt_thread_startup(&thread2); + return 0; +} + +/* 导出到 msh 命令列表中 */ +MSH_CMD_EXPORT(mutex_sample, mutex sample); + +``` + +```c +/* + * 时间集学习 + * 程序会初始化2个线程及初始化一个静态事件对象 + * 一个线程等待于事件对象上,以接收事件; + * 一个线程发送事件 (事件3/事件5) +*/ +#include + +#define THREAD_PRIORITY 9 +#define THREAD_TIMESLICE 5 + +#define EVENT_FLAG3 (1 << 3) +#define EVENT_FLAG5 (1 << 5) + +/* 事件控制块 */ +static struct rt_event event; + +ALIGN(RT_ALIGN_SIZE) +static char thread1_stack[1024]; +static struct rt_thread thread1; + +/* 线程1入口函数 */ +static void thread1_recv_event(void *param) +{ + rt_uint32_t e; + + /* 第一次接收事件,事件3或事件5任意一个可以触发线程1,接收完后清除事件标志 */ + if (rt_event_recv(&event, (EVENT_FLAG3 | EVENT_FLAG5), + RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, + RT_WAITING_FOREVER, &e) == RT_EOK) + { + rt_kprintf("thread1: OR recv event 0x%x\n", e); + } + + rt_kprintf("thread1: delay 1s to prepare the second event\n"); + rt_thread_mdelay(1000); + + /* 第二次接收事件,事件3和事件5均发生时才可以触发线程1,接收完后清除事件标志 */ + if (rt_event_recv(&event, (EVENT_FLAG3 | EVENT_FLAG5), + RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, + RT_WAITING_FOREVER, &e) == RT_EOK) + { + rt_kprintf("thread1: AND recv event 0x%x\n", e); + } + rt_kprintf("thread1 leave.\n"); +} + +ALIGN(RT_ALIGN_SIZE) +static char thread2_stack[1024]; +static struct rt_thread thread2; + +/* 线程2入口 */ +static void thread2_send_event(void *param) +{ + rt_kprintf("thread2: send event3\n"); + rt_event_send(&event, EVENT_FLAG3); + rt_thread_mdelay(200); + + rt_kprintf("thread2: send event5\n"); + rt_event_send(&event, EVENT_FLAG5); + rt_thread_mdelay(200); + + rt_kprintf("thread2: send event3\n"); + rt_event_send(&event, EVENT_FLAG3); + rt_kprintf("thread2 leave.\n"); +} + +int event_sample(void) +{ + rt_err_t result; + + /* 初始化事件对象 */ + result = rt_event_init(&event, "event", RT_IPC_FLAG_PRIO); + if (result != RT_EOK) + { + rt_kprintf("init event failed.\n"); + return -1; + } + + rt_thread_init(&thread1, + "thread1", + thread1_recv_event, + RT_NULL, + &thread1_stack[0], + sizeof(thread1_stack), + THREAD_PRIORITY - 1, THREAD_TIMESLICE); + rt_thread_startup(&thread1); + + rt_thread_init(&thread2, + "thread2", + thread2_send_event, + RT_NULL, + &thread2_stack[0], + sizeof(thread2_stack), + THREAD_PRIORITY, THREAD_TIMESLICE); + rt_thread_startup(&thread2); + + return 0; +} + +/* 导出到 msh 命令列表中 */ +MSH_CMD_EXPORT(event_sample, event sample); + +``` + +```c +/* + * 邮箱学习 + * + * 这个程序会创建2个动态线程,一个静态的邮箱对象,其中一个线程往邮箱中发送邮件, + * 一个线程往邮箱中收取邮件。 + */ +#include + +#define THREAD_PRIORITY 10 +#define THREAD_TIMESLICE 5 + +/* 邮箱控制块 */ +static struct rt_mailbox mb; +/* 用于放邮件的内存池 */ +static char mb_pool[128]; + +static char mb_str1[] = "I'm a mail!"; +static char mb_str2[] = "this is another mail!"; +static char mb_str3[] = "over"; + +ALIGN(RT_ALIGN_SIZE) + +static char thread1_stack[1024]; +static struct rt_thread thread1; + +/* 线程1入口 */ +static void thread1_entry(void *parameter) +{ + char *str; + + while (1) + { + rt_kprintf("thread1: try to recv a mail\n"); + + /* 从邮箱中收取邮件 */ + if (rt_mb_recv(&mb, (rt_ubase_t *)&str, RT_WAITING_FOREVER) == RT_EOK) + { + rt_kprintf("thread1: get a mail from mailbox, the content:%s\n", str); + if (str == mb_str3) + break; + + /* 延时100ms */ + rt_thread_mdelay(100); + } + } + /* 执行邮箱对象脱离 */ + rt_mb_detach(&mb); +} + +ALIGN(RT_ALIGN_SIZE) + +static char thread2_stack[1024]; +static struct rt_thread thread2; + +/* 线程2入口 */ +static void thread2_entry(void *parameter) +{ + rt_uint8_t count; + + count = 0; + while (count < 10) + { + count ++; + if (count & 0x1) + { + /* 发送mb_str1地址到邮箱中 */ + rt_mb_send(&mb, (rt_uint32_t)&mb_str1); + } + else + { + /* 发送mb_str2地址到邮箱中 */ + rt_mb_send(&mb, (rt_uint32_t)&mb_str2); + } + + /* 延时200ms */ + rt_thread_mdelay(200); + } + + /* 发送邮件告诉线程1,线程2已经运行结束 */ + rt_mb_send(&mb, (rt_uint32_t)&mb_str3); +} + +int mailbox_sample(void) +{ + rt_err_t result; + + /* 初始化一个mailbox */ + result = rt_mb_init(&mb, + "mbt", /* 名称是mbt */ + &mb_pool[0], /* 邮箱用到的内存池是mb_pool */ + sizeof(mb_pool) / sizeof(rt_ubase_t), /* 邮箱中的邮件数目,sizeof(rt_ubase_t)表示指针大小 */ + RT_IPC_FLAG_PRIO); /* 采用PRIO方式进行线程等待 */ + if (result != RT_EOK) + { + rt_kprintf("init mailbox failed.\n"); + return -1; + } + + rt_thread_init(&thread1, + "thread1", + thread1_entry, + RT_NULL, + &thread1_stack[0], + sizeof(thread1_stack), + THREAD_PRIORITY, THREAD_TIMESLICE); + + rt_thread_startup(&thread1); + + rt_thread_init(&thread2, + "thread2", + thread2_entry, + RT_NULL, + &thread2_stack[0], + sizeof(thread2_stack), + THREAD_PRIORITY, THREAD_TIMESLICE); + + rt_thread_startup(&thread2); + return 0; +} + +/* 导出到 msh 命令列表中 */ +MSH_CMD_EXPORT(mailbox_sample, mailbox sample); + +``` + +```c +/* + * 消息队列学习 + * + * 这个程序会创建2个动态线程,一个线程会从消息队列中收取消息;一个线程会定时给消 + * 息队列发送 普通消息和紧急消息。 + */ +#include + +#define THREAD_PRIORITY 25 +#define THREAD_TIMESLICE 5 + +/* 消息队列控制块 */ +static struct rt_messagequeue mq; +/* 消息队列中用到的放置消息的内存池 */ +static rt_uint8_t msg_pool[2048]; + +ALIGN(RT_ALIGN_SIZE) +static char thread1_stack[1024]; +static struct rt_thread thread1; + +/* 线程1入口函数 */ +static void thread1_entry(void *parameter) +{ + char buf = 0; + rt_uint8_t cnt = 0; + + while (1) + { + /* 从消息队列中接收消息 */ + if (rt_mq_recv(&mq, &buf, sizeof(buf), RT_WAITING_FOREVER) == RT_EOK) + { + rt_kprintf("thread1: recv msg from msg queue, the content:%c\n", buf); + if (cnt == 19) + { + break; + } + } + /* 延时50ms */ + cnt++; + rt_thread_mdelay(50); + } + rt_kprintf("thread1: detach mq \n"); + rt_mq_detach(&mq); +} + +ALIGN(RT_ALIGN_SIZE) + +static char thread2_stack[1024]; +static struct rt_thread thread2; + +/* 线程2入口 */ +static void thread2_entry(void *parameter) +{ + int result; + char buf = 'A'; + rt_uint8_t cnt = 0; + + while (1) + { + if (cnt == 8) + { + /* 发送紧急消息到消息队列中 */ + result = rt_mq_urgent(&mq, &buf, 1); + if (result != RT_EOK) + { + rt_kprintf("rt_mq_urgent ERR\n"); + } + else + { + rt_kprintf("thread2: send urgent message - %c\n", buf); + } + } + else if (cnt >= 20)/* 发送20次消息之后退出 */ + { + rt_kprintf("message queue stop send, thread2 quit\n"); + break; + } + else + { + /* 发送消息到消息队列中 */ + result = rt_mq_send(&mq, &buf, 1); + if (result != RT_EOK) + { + rt_kprintf("rt_mq_send ERR\n"); + } + + rt_kprintf("thread2: send message - %c\n", buf); + } + buf++; + cnt++; + /* 延时5ms */ + rt_thread_mdelay(5); + } +} + +/* 消息队列示例的初始化 */ +int msgq_sample(void) +{ + rt_err_t result; + + /* 初始化消息队列 */ + result = rt_mq_init(&mq, + "mqt", + &msg_pool[0], /* 内存池指向msg_pool */ + 1, /* 每个消息的大小是 1 字节 */ + sizeof(msg_pool), /* 内存池的大小是msg_pool的大小 */ + RT_IPC_FLAG_PRIO); /* 如果有多个线程等待,按照先来先得到的方法分配消息 */ + + if (result != RT_EOK) + { + rt_kprintf("init message queue failed.\n"); + return -1; + } + + rt_thread_init(&thread1, + "thread1", + thread1_entry, + RT_NULL, + &thread1_stack[0], + sizeof(thread1_stack), + THREAD_PRIORITY, THREAD_TIMESLICE); + rt_thread_startup(&thread1); + + rt_thread_init(&thread2, + "thread2", + thread2_entry, + RT_NULL, + &thread2_stack[0], + sizeof(thread2_stack), + THREAD_PRIORITY, THREAD_TIMESLICE); + rt_thread_startup(&thread2); + + return 0; +} + +/* 导出到 msh 命令列表中 */ +MSH_CMD_EXPORT(msgq_sample, msgq sample); + +``` + +```c +/* + * 信号学习 + * + * 这个例子会创建一个线程,线程安装信号,然后给这个线程发送信号。 + * + */ +#include + +#define THREAD_PRIORITY 25 +#define THREAD_STACK_SIZE 512 +#define THREAD_TIMESLICE 5 + +static rt_thread_t tid1 = RT_NULL; + +/* 线程1的信号处理函数 */ +void thread1_signal_handler(int sig) +{ + rt_kprintf("thread1 received signal %d\n", sig); +} + +/* 线程1的入口函数 */ +static void thread1_entry(void *parameter) +{ + int cnt = 0; + + /* 安装信号 */ + rt_signal_install(SIGUSR1, thread1_signal_handler); + rt_signal_unmask(SIGUSR1); + + /* 运行10次 */ + while (cnt < 10) + { + /* 线程1采用低优先级运行,一直打印计数值 */ + rt_kprintf("thread1 count : %d\n", cnt); + + cnt++; + rt_thread_mdelay(100); + } +} + +/* 信号示例的初始化 */ +int signal_sample(void) +{ + /* 创建线程1 */ + tid1 = rt_thread_create("thread1", + thread1_entry, RT_NULL, + THREAD_STACK_SIZE, + THREAD_PRIORITY, THREAD_TIMESLICE); + + if (tid1 != RT_NULL) + rt_thread_startup(tid1); + + rt_thread_mdelay(300); + + /* 发送信号 SIGUSR1 给线程1 */ + rt_thread_kill(tid1, SIGUSR1); + + return 0; +} + +/* 导出到 msh 命令列表中 */ +MSH_CMD_EXPORT(signal_sample, signal sample); + + +``` + diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\344\275\234\344\270\232/\347\254\254\344\272\214\345\244\251\344\275\234\344\270\232.c" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\344\275\234\344\270\232/\347\254\254\344\272\214\345\244\251\344\275\234\344\270\232.c" new file mode 100644 index 0000000000000000000000000000000000000000..5a1a250be06ec6956fc18ccba83daac9a73c2553 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\344\275\234\344\270\232/\347\254\254\344\272\214\345\244\251\344\275\234\344\270\232.c" @@ -0,0 +1,62 @@ +#include +#include +#include + +rt_thread_t taskA = RT_NULL; +void taskA_entry(void *parameter) +{ + int count = 0; + while (1) { + rt_kprintf("TaskA running - Count: %d\n", count); + + // 在特定计数值延时1秒 + if (count == 10 || count == 100 || count == 1000 || count == 10000) { + rt_thread_mdelay(1000); + } + + count++; + } +} + +rt_thread_t taskB = RT_NULL; +void taskB_entry(void *parameter) +{ + while (1) { + rt_kprintf("TaskB running\n"); + rt_thread_mdelay(200); // 添加延迟避免过度占用CPU + } +} + +rt_thread_t taskC = RT_NULL; +void taskC_entry(void *parameter) +{ + while (1) { + rt_kprintf("TaskC running\n"); + rt_thread_mdelay(200); // 添加延迟避免过度占用CPU + } +} + +int main(void) +{ + // 创建任务线程 + taskA = rt_thread_create("taskA", taskA_entry, RT_NULL, 1024, 9, 5); + taskB = rt_thread_create("taskB", taskB_entry, RT_NULL, 1024, 11, 5); + taskC = rt_thread_create("taskC", taskC_entry, RT_NULL, 1024, 11, 5); + + + if (taskA != RT_NULL) { + rt_thread_startup(taskA); + } + + if (taskB != RT_NULL) { + rt_thread_startup(taskB); + } + + if (taskC != RT_NULL) { + rt_thread_startup(taskC); + } + + rt_kprintf("Main application started\n"); + + return 0; +} diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-19-02.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-19-02.png" new file mode 100644 index 0000000000000000000000000000000000000000..c3f9b6fdd2da986e770db3398f2237d93d2c892d Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-19-02.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-25-46.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-25-46.png" new file mode 100644 index 0000000000000000000000000000000000000000..a610fb98d1d390ea817589e127840ed63c412374 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-25-46.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-31-06.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-31-06.png" new file mode 100644 index 0000000000000000000000000000000000000000..5ece19c881535434dce2fbbf3577fb91dcd3a9b2 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-31-06.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-33-39.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-33-39.png" new file mode 100644 index 0000000000000000000000000000000000000000..bb4fcdedafeb29bbb0c0052855cd03be1853b4e4 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-33-39.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-34-50.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-34-50.png" new file mode 100644 index 0000000000000000000000000000000000000000..1841efc0b91e5fc54df6f105123f474e8d35cb71 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-34-50.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-39-29.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-39-29.png" new file mode 100644 index 0000000000000000000000000000000000000000..9e5f3202b26cf730b66b2e3708a39238c1eb44bf Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-39-29.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-43-40.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-43-40.png" new file mode 100644 index 0000000000000000000000000000000000000000..1186df03494edb10e9c86d34c97e5281fde89bfa Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-43-40.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-44-57.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-44-57.png" new file mode 100644 index 0000000000000000000000000000000000000000..968b509e7bea2b6c96d4b521156f429c765306b8 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-44-57.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-52-05.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-52-05.png" new file mode 100644 index 0000000000000000000000000000000000000000..76dc23a69e852070003da47f6babc0698ebc5ed5 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-52-05.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-55-25.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-55-25.png" new file mode 100644 index 0000000000000000000000000000000000000000..8e85efb05f2f482a4a929be7e71565a7122b1b38 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-55-25.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-59-54.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-59-54.png" new file mode 100644 index 0000000000000000000000000000000000000000..086d96a649369dd91510e03822070a52dff932d9 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_09-59-54.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_10-09-00.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_10-09-00.png" new file mode 100644 index 0000000000000000000000000000000000000000..36636eb5bef312f02ee6b41977b525d43c093d6e Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_10-09-00.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_10-10-58.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_10-10-58.png" new file mode 100644 index 0000000000000000000000000000000000000000..38e80b43681230c326f68895c722f39c7c6bb445 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day1/Snipaste_2025-07-22_10-10-58.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-32-41.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-32-41.png" new file mode 100644 index 0000000000000000000000000000000000000000..737115c3a630d913084c29649aee797f24bab0ca Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-32-41.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-33-07.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-33-07.png" new file mode 100644 index 0000000000000000000000000000000000000000..13c3877b17b9a48422f55dc0dac426c29494aa91 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-33-07.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-33-40.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-33-40.png" new file mode 100644 index 0000000000000000000000000000000000000000..9604084491bac2682023035044fc5134d71b4d3d Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-33-40.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-36-47.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-36-47.png" new file mode 100644 index 0000000000000000000000000000000000000000..c8428a80ae229835d11940e29b455f3c2aaff2de Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-36-47.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-39-54.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-39-54.png" new file mode 100644 index 0000000000000000000000000000000000000000..ae6b669c7b2118c16db35c4f1607774f354e3a1e Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-39-54.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-41-58.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-41-58.png" new file mode 100644 index 0000000000000000000000000000000000000000..819ccfba55f6f10352b635c00f6a306d7172a194 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-41-58.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-43-12.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-43-12.png" new file mode 100644 index 0000000000000000000000000000000000000000..d55dc593eb305efea6f8947dada696a6afc84202 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_21-43-12.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-21-21.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-21-21.png" new file mode 100644 index 0000000000000000000000000000000000000000..7707623c8cee76bb7df7d0a68cdf83032d6536dd Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-21-21.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-23-12.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-23-12.png" new file mode 100644 index 0000000000000000000000000000000000000000..445b2a53c79c6978d25822ab8e5fcbbc56b28abd Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-23-12.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-27-10.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-27-10.png" new file mode 100644 index 0000000000000000000000000000000000000000..20d69f51638352b8dfaaeaf62af32f229d5a2ff1 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-27-10.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-46-59.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-46-59.png" new file mode 100644 index 0000000000000000000000000000000000000000..90743edd3a1dee37c5a683d39571462a73cf4b48 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-46-59.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-49-11.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-49-11.png" new file mode 100644 index 0000000000000000000000000000000000000000..7357d603f6cb050f21f0d262e9df7f8ed961f23d Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-49-11.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-55-23.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-55-23.png" new file mode 100644 index 0000000000000000000000000000000000000000..4a2e042e0d2a048fe2c6251c4981b697cc554c0c Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day2/Snipaste_2025-07-22_22-55-23.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-49-58.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-49-58.png" new file mode 100644 index 0000000000000000000000000000000000000000..9545e3ac448c10e48b6d0b903129d463c8559939 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-49-58.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-51-40.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-51-40.png" new file mode 100644 index 0000000000000000000000000000000000000000..85c454003aebb6e3f23a6dae6cb0abdc0400269e Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-51-40.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-53-19.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-53-19.png" new file mode 100644 index 0000000000000000000000000000000000000000..873714b7edee2f75ddd3480e410c0ee7e1068b61 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-53-19.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-55-24.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-55-24.png" new file mode 100644 index 0000000000000000000000000000000000000000..f35d7c8e7d469d9cb983d290c440f3208966dbd5 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-55-24.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-56-25.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-56-25.png" new file mode 100644 index 0000000000000000000000000000000000000000..457d29ca2d86760b8b74ab12272da12b4b766c82 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_21-56-25.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_22-05-04.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_22-05-04.png" new file mode 100644 index 0000000000000000000000000000000000000000..03cc8779e3929226ae28c9190399260d8f80dc4b Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/images/day3/Snipaste_2025-07-30_22-05-04.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day1 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272\344\270\216GIT\344\275\277\347\224\250.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day1 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272\344\270\216GIT\344\275\277\347\224\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..4b8a1653d4a56b35990c23394e5a9505d0386875 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day1 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272\344\270\216GIT\344\275\277\347\224\250.md" @@ -0,0 +1,101 @@ +# 【RSOC25】Day1 课程笔记:开发环境搭建与GIT使用 + +本文参考[RT-Thread-【RSOC25】Day1 课程笔记:开发环境搭建与GIT使用RT-Thread问答社区 - RT-Thread](https://club.rt-thread.org/ask/article/91d48b98d44087f1.html) + +# 1. git工具的下载和配置 + +### 1.1 git工具下载 + +前往[git下载界面](https://git-scm.com/downloads/win/)下载windows版本并安装。 + +![Snipaste_2025-07-22_09-19-02](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-19-02.png) + +### 1.2 gitte官网SSH密钥配置 + +1. 打开[RSOC-RTT: RT-Thread 暑期夏令营仓库](https://gitee.com/rtthread/rsoc-rtt),点击克隆/下载 +2. 配置个人信息,依次复制4条命令到git终端 + +![Snipaste_2025-07-22_09-25-46](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-25-46.png) + +3. 在第四条命令生成密钥后,点击右上角头像->个人主页->设置->SSH公钥,将复制的公钥填入并取个标题,点击确定。 + +![Snipaste_2025-07-22_09-31-06](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-31-06.png) + +4. 回到git bash输入`ssh -T git@gitee.com`验证gitte连接,若出现绿色框中信息则说明配置成功。 + +![Snipaste_2025-07-22_09-34-50](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-34-50.png) + +## 2. 环境搭建与env工具使用 + +### 2.1 利用git拉取源码 + +#### 2.1.1 RT-thread源码拉取 + +创建一个文件夹作为本次项目的主文件夹,进入文件夹右键在git bash中打开输入 + +``` +git clone https://gitee.com/rtthread/rt-thread.git +``` + +拉取RT-thread源代码 + +![Snipaste_2025-07-22_09-39-29](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-39-29.png) + +### 2.2 离线下载env + +根据 [RT-Thread论坛教程](https://club.rt-thread.org/ask/article/af8952fcf0ca464b.html)按照步骤配置即可 + +若出现这种情况 + +![Snipaste_2025-07-22_09-43-40](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-43-40.png) + +下拉选择rtt-env即可,点击start即可正常使用 + +![Snipaste_2025-07-22_09-44-57](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-44-57.png) + +### 2.3 工程编译与运行 + +#### 2.3.1 Vscode下载和安装 + +前往[vscode官网](https://code.visualstudio.com/)下载并安装vscode 点击Download即可下载,按照提示一路按照即可。 + +![image-20250722094825379](C:\Users\lmc\AppData\Roaming\Typora\typora-user-images\image-20250722094825379.png) + +#### 2.3.2 Scons构建脚本简介 + +进入rt-thread\bsp\qemu-vexpress-a9目录右键菜单栏在vscode中打开 + +打开后可以看到几乎每个目录下都会存在SConscript脚本文件,SConscript脚本文件个人浅薄理解为链接库,寻找当前目录下的文件。 + +![Snipaste_2025-07-22_09-52-05](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-52-05.png) + +### 2.3.3 Hello RT-thread工程编译和运行 + +在RT-thread目录下打开ENV构建工具,然后进入\bsp\qemu-vexpress-a9目录。 + +接着输入`menuconfig`后保存生成配置文件(不需要修改)。 + +最后`scons-j4`编译。 + +![Snipaste_2025-07-22_09-55-25](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-55-25.png) + +如图即是编译成功 + +![Snipaste_2025-07-22_09-59-54](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_09-59-54.png) + +输入`qemu-nographic.bat`进入即可执行当前main.c文件 + +![Snipaste_2025-07-22_10-09-00](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_10-09-00.png) + +Ctrl+A +X即可退出程序。 + +### 2.3.4 LVGL demo工程编译和运行 + +接上一节工程退出后执行`menuconfig`命令Hardware Drivers Config->Onboard Peripheral Drivers-> + +选择Enable LVGL demo和 Enable LVGL for LCD,然后退出并保存。 + +![Snipaste_2025-07-22_10-10-58](E:\2025_RTT\rsoc-rtt\2025\第1组(STM32H750-ART-PI)\李梦臣\笔记\images\day1\Snipaste_2025-07-22_10-10-58.png) + +接着输入`scons-j4`编译,编译成功后输入`qemu.bat`,结果如下图。 + diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day2 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232RTT\345\267\245\345\205\267\344\275\277\347\224\250\345\222\214\345\206\205\346\240\270\345\205\245\351\227\250.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day2 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232RTT\345\267\245\345\205\267\344\275\277\347\224\250\345\222\214\345\206\205\346\240\270\345\205\245\351\227\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..13e4201682bceaed2820c0c205892d62847d497f --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day2 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232RTT\345\267\245\345\205\267\344\275\277\347\224\250\345\222\214\345\206\205\346\240\270\345\205\245\351\227\250.md" @@ -0,0 +1 @@ +学习笔记:https://club.rt-thread.org/ask/article/fd3ece97f1192919.html \ No newline at end of file diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day3 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232\347\272\277\347\250\213\351\227\264\347\232\204\345\220\214\346\255\245\345\222\214\351\200\232\350\256\257.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day3 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232\347\272\277\347\250\213\351\227\264\347\232\204\345\220\214\346\255\245\345\222\214\351\200\232\350\256\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..932c3da056f0b681eb7fbbc3b1fd3daef584241c --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\216\346\242\246\350\207\243/\347\254\224\350\256\260/\343\200\220RSOC25\343\200\221Day3 \350\257\276\347\250\213\347\254\224\350\256\260\357\274\232\347\272\277\347\250\213\351\227\264\347\232\204\345\220\214\346\255\245\345\222\214\351\200\232\350\256\257.md" @@ -0,0 +1 @@ +[RT-Thread-【RSOC25】Day3 课程笔记:线程间的同步和通讯RT-Thread问答社区 - RT-Thread](https://club.rt-thread.org/ask/article/498a42c3b387dbff.html)学习笔记 \ No newline at end of file