打印
[MM32软件]

【MM32 eMiniBoard测评报告】+RTThread 多线程测试(一)

[复制链接]
699|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
往事匆匆|  楼主 | 2020-5-25 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、前言


板子拿到手了,上电测试了一下感觉非常好。外形精致细腻,漂亮!




二、rtthread多线程测试


1、首先去 rtthread官网下载一个RT-Thread 完整版 ,点击打开该文件夹,再打开bsp这个文件夹;


2、在bsp文件夹内找到mm32l07x,点击打开,里边有keil和IAR的工程,我用的是Keil的



3、打开Keil之后 在工程中打开main.c在这里绘制代码,创建线程;

#include<rtthread.h>
#include <rtdevice.h>
#include "HAL_device.h"

/* 定义线程控制块 */
static rt_thread_t led1_thread = RT_NULL;
static rt_thread_t led2_thread = RT_NULL;

static void led1_thread_entry(void* parameter);
static void led2_thread_entry(void* parameter);

/********************************************************************************************************
* led_init(void)
********************************************************************************************************/
void led_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}

int main(void)
{
rt_kprintf("RTT实验!\n");
rt_kprintf("\n");
led_init();
/* 创建一个线程 */
led1_thread = /* 线程控制块指针 */
rt_thread_create( "led1", /* 线程名字 */
led1_thread_entry, /* 线程入口函数 */
RT_NULL, /* 线程入口函数参数 */
512, /* 线程栈大小 */
1, /* 线程的优先级 */
20); /* 线程时间片 */

/* 启动线程,开启调度 */
if (led1_thread != RT_NULL)
rt_thread_startup(led1_thread);
else
return -1;

led2_thread = /* 线程控制块指针 */
rt_thread_create( "led2", /* 线程名字 */
led2_thread_entry, /* 线程入口函数 */
RT_NULL, /* 线程入口函数参数 */
512, /* 线程栈大小 */
2, /* 线程的优先级 */
20); /* 线程时间片 */

/* 启动线程,开启调度 */
if (led2_thread != RT_NULL)
rt_thread_startup(led2_thread);
else
return -1;

}

/**********线程一***********/
static void led1_thread_entry(void* parameter)
{
int count = 1;
while (count++)
{
rt_kprintf("线程一:");
rt_kprintf("led1!\n");
GPIO_SetBits(GPIOA, GPIO_Pin_15);
rt_thread_mdelay(500);
GPIO_ResetBits(GPIOA, GPIO_Pin_15);
rt_thread_mdelay(500);
}
}

/**********线程二***********/
static void led2_thread_entry(void* parameter)
{
int count = 1;
while (count++)
{
rt_kprintf("线程二:");
rt_kprintf("led2!\n");
GPIO_SetBits(GPIOB, GPIO_Pin_3);
rt_thread_mdelay(500);
GPIO_ResetBits(GPIOB, GPIO_Pin_3);
rt_thread_mdelay(500);
}
}





4、测试现象;



两个LED同时闪烁。


本想放图片的,由于字数限制修修改改最后把图片全删了 才发了出来


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

17

帖子

0

粉丝