新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > stm32快速學習5——串口中斷接收

        stm32快速學習5——串口中斷接收

        作者: 時間:2016-11-17 來源:網絡 收藏
        串口自發自收

        設定串口時鐘

        本文引用地址:http://www.104case.com/article/201611/315444.htm

        設定引腳功能

        中斷優先級

        設定串口

        Main文件

        #include"stm32f10x.h"

        voidRCC_Configuration(void);

        voidGPIO_Configuration(void);

        voidUSART_Configuration(void);

        voidNVIC_Configuration(void);

        intmain(void)

        {

        RCC_Configuration();

        GPIO_Configuration();

        NVIC_Configuration();

        USART_Configuration();

        while(1);

        }

        voidRCC_Configuration(void)

        {

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);

        }

        voidGPIO_Configuration(void)

        {

        GPIO_InitTypeDefGPIO_InitStructure;

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

        GPIO_Init(GPIOA,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

        GPIO_Init(GPIOA,&GPIO_InitStructure);

        }

        voidUSART_Configuration(void)

        {

        USART_InitTypeDefUSART_InitStructure;

        USART_InitStructure.USART_BaudRate=115200;

        USART_InitStructure.USART_WordLength=USART_WordLength_8b;

        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_Tx|USART_Mode_Rx;

        USART_Init(USART1,&USART_InitStructure);

        USART_Cmd(USART1,ENABLE);

        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);/*接收中斷使能*/

        }

        voidNVIC_Configuration(void)

        {

        NVIC_InitTypeDefNVIC_InitStructure;

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

        NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;/*3.4的庫不是使用USART1_IRQChannel,看stm32f10x.h吧*/

        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

        NVIC_Init(&NVIC_InitStructure);

        }

        Stm32f10x_it.c加入

        voidUSART1_IRQHandler(void)

        {

        unsignedinti;

        if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)

        {

        i=USART_ReceiveData(USART1);

        USART_SendData(USART1,i);

        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);

        }

        if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)

        {

        /*清楚接收中斷標志*/

        USART_ClearITPendingBit(USART1,USART_IT_RXNE);

        }

        }



        關鍵詞: stm32串口中斷接

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 延津县| 锡林郭勒盟| 大田县| 西青区| 金昌市| 平湖市| 福贡县| 浠水县| 尼木县| 永昌县| 抚顺市| 临清市| 乐安县| 新宁县| 梁平县| 岐山县| 广南县| 鹿邑县| 太湖县| 图片| 昌都县| 姚安县| 南昌县| 林州市| 嘉义县| 监利县| 托克托县| 刚察县| 扎鲁特旗| 佛坪县| 黑山县| 古蔺县| 屏东市| 呼玛县| 赫章县| 紫云| 汤原县| 伊春市| 淅川县| 剑川县| 安顺市|