一、前言
板子拿到手了,上电测试了一下感觉非常好。外形精致细腻,漂亮!
二、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同时闪烁。
本想放图片的,由于字数限制修修改改最后把图片全删了 才发了出来。
|