这里,使用信号量来同步两个线程。
简单来说,线程每隔一定的时间扫描按键。一旦其检测到有效的按键,便release 信号量,使得线程2 从挂起进入 运行态,向串口打印按键信息。
这样,便实现了两个线程的同步。
程序:
#include <rtthread.h>
#include "stm32f10x.h"
#define KEY_PORT GPIOB
#define KEY_PIN (GPIO_Pin_0 | GPIO_Pin_1)
#define KEY_CLOCK RCC_AHB1Periph_GPIOB
void rt_init_thread_entry(void *parameter)
{
GPIO_InitTypeDef GPIO_InitStructure;
//开启PB0时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
static rt_uint8_t thread1_stack[1024];
struct rt_thread thread1;
static int key;
static struct rt_semaphore sem;
static void rt_thread_entry1(void *parameter)
{
int temp;
while (1)
{
key = GPIO_ReadInputData(