历史上的今天
今天是:2024年10月08日(星期二)
2019年10月08日 | stm32 freertos 之串口中断
2019-10-08 来源:eefocus
一、中断处理函数
void USART1_IRQHandler(void)
{
BaseType_t xHigherPriorityTaskWoken;
xHigherPriorityTaskWoken = pdFALSE;
u8 cChar;
if(USART_GetITStatus (USART1,USART_IT_RXNE)!=RESET)
{
cChar=USART_ReceiveData(USART1);
xQueueSendToBackFromISR (xQueueRx,&cChar,&xHigherPriorityTaskWoken);
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
}
二、中断向量表配置
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig (NVIC_PriorityGroup_4);
NVIC_InitStructure .NVIC_IRQChannel =USART1_IRQn ;
NVIC_InitStructure .NVIC_IRQChannelPreemptionPriority =6;
NVIC_InitStructure .NVIC_IRQChannelCmd =ENABLE ;
NVIC_Init(&NVIC_InitStructure );
}
三、串口接收任务创建
xQueueHandle xQueueRx;
void vPC_Communication_Task(void *pvParameters)
{
BaseType_t xHigherPriorityTaskWoken;
xHigherPriorityTaskWoken = pdFALSE;
u8 rx=0;
xQueueRx=xQueueCreate(20,sizeof(u8));
while(1)
{
if(xQueueReceiveFromISR(xQueueRx,&rx,&xHigherPriorityTaskWoken))
{
printf("%crn",rx);
}
vTaskDelay(1000/portTICK_RATE_MS );
}
}
四、主函数
int main(void)
{
BSP_INIT();
xTaskCreate(vLED_Task ,"led_task",50,NULL,1,NULL);
xTaskCreate(vPC_Communication_Task,"vPC_Communication_Task",500,NULL,2,NULL);
vTaskStartScheduler();
}
史海拾趣
|
北京奥运开幕式上,排山倒海、气贯长虹的“击缶而歌”表演,叫人为之一振。缶作为一种古代乐器,是如何在2008名壮汉的手下发光并组成频闪的画面的呢?其实,这一切的实现都与LED密不可分。本文将带您了解缶阵频闪发光的奥秘。 ...… 查看全部问答> |
|
一个简单的程序#include "stm32f10x_lib.h"EXTI_InitTypeDef EXTI_InitStructure;ErrorStatus HSEStartUpStatus;void RCC_Configuration(void);void GPIO_Configuration(void);void NVIC_Configuration(voi ...… 查看全部问答> |
|
一个系统中共有四块独立的电路板1#、2#、3#、4#,用的都是STM32F103C8T6,他们之间的供电是统一通过1#电路板从外部电源接入再一级一级传递,如图示,他们之间有通信联系,事先估算过电流消耗,感觉是够的。当调试好各自程序后,四块电路板由 ...… 查看全部问答> |
|
为了更好的做大开源机器人DIY,我们目前诚心招收一批对开源机器人感兴趣的EE坛友,相关能力主要包括具备PCB设计能力,驱动开发能力,软件美工能力,算法研究能力,上位机软件开发能力,机械设计能力中某一项或几项能力的网友。如果感兴趣的都可以加 ...… 查看全部问答> |
|
2013年7月10日,江都双沟镇一工厂内的乙醇罐爆炸起火。消防队员经过近4个小时努力终将大火扑灭,好在此次事故并未造成人员伤亡。经消防部门初步查明,该厂在生产放料过程中因静电引起固体乙醇被引燃。 静电在一定 ...… 查看全部问答> |




