【记录】STM32在ucOS串口的操作(Polling)

来源:互联网 发布:红楼梦 脂评本 知乎 编辑:程序博客网 时间:2024/05/16 16:19

1、初始化串口

static  void  BSP_USART_Init (void) {     //GPIO端口设置    GPIO_InitTypeDef GPIO_InitStructure;    USART_InitTypeDef USART_InitStructure;    //NVIC_InitTypeDef NVIC_InitStructure;    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟    USART_DeInit(USART1);  //复位串口1     //USART1_TX   PA.9    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出    GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9    //USART1_RX   PA.10    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入    GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA10   //USART 初始化设置    USART_InitStructure.USART_BaudRate = 9600;//一般设置为9600;    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式    USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位    USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式    USART_Init(USART1, &USART_InitStructure); //初始化串口    USART_Cmd(USART1, ENABLE);                //使能串口 }

2、在ucOS的任务函数中添加串口接收代码(Polling)

while (DEF_TRUE) {    /* Task body, always written as an infinite loop. */         BSP_LED_Toggle(1);         OSTimeDlyHMSM(0, 0, 1, 150);         while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET)        {          USART_SendData(USART1,(USART_ReceiveData(USART1) & 0x7F));        }           }
0 0
原创粉丝点击