本次使用rtt 进行功能开发,sdk manger 中下载 rt 支持库
创建工程
led 点灯,PB4是jtag 管脚,需要将管脚复用开启使能,使用swd 进行下载
#include <stdint.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <drv_gpio.h>
#define LED1_PIN GET_PIN(B,5)
#define LED2_PIN GET_PIN(B,4)
#define LED3_PIN GET_PIN(A,8)
void LED_Init(void)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO,ENABLE);
GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE, ENABLE);
// 设置引脚为输出方式
rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(LED3_PIN, PIN_MODE_OUTPUT);
}
static void led_thread_entry(void* p)
{
LED_Init();
while(1)
{
#if 1
rt_pin_write(LED1_PIN, PIN_HIGH);
rt_thread_mdelay(400);
rt_pin_write(LED1_PIN, PIN_LOW);
rt_thread_mdelay(400);
#endif
rt_pin_write(LED2_PIN, PIN_HIGH);
rt_thread_mdelay(400);
rt_pin_write(LED2_PIN, PIN_LOW);
rt_thread_mdelay(400);
rt_pin_write(LED3_PIN, PIN_HIGH);
rt_thread_mdelay(400);
rt_pin_write(LED3_PIN, PIN_LOW);
rt_thread_mdelay(400);
}
}
static int Thread_LED(void)
{rt_kprintf("Thread_led ");
rt_thread_t thread_led= RT_NULL;
thread_led = rt_thread_create( "led",//线程名字
led_thread_entry,//线程入口函数
RT_NULL,//线程入口函数参数
1024,//分配堆栈大小
5,//线程的优先级
10);//线程所分配的时间片
if(thread_led == RT_NULL)
{
rt_kprintf("Thread_led ERROR");
return RT_ERROR;
}
rt_thread_startup(thread_led); //启动线程
}INIT_APP_EXPORT(Thread_LED);//将线程初始化添加入系统初始化
GET_PIN 使用drv_gpio.h 中定义,之前用过1.1版本,不太友好,这次新版本gpio 用起来比较方便
点灯效果
更多回帖