欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3918|回復(fù): 0
收起左側(cè)

基于STM32F407的串口驅(qū)動(dòng)程序

[復(fù)制鏈接]
ID:330391 發(fā)表于 2018-10-11 13:24 | 顯示全部樓層 |閱讀模式
#include "usart1.h"//自身的頭文件


/*******************
函數(shù)名: USART1_init
函數(shù)返回值: 無
函數(shù)參數(shù): U32 bound:設(shè)置的botelv
函數(shù)功能: 實(shí)現(xiàn)USART1的初始化函數(shù)
函數(shù)描述:

********************/
void USART1_init(u32 bound)
{
        float USARTDIV;
        u32 DIV_Mantivssa = 0;
        u32 DIV_Fraction = 0;
        u8 over8 = 0;
       
        /****IO口的配置******/
        RCC->AHB1ENR |= (0x1<<0);
        GPIOA->MODER &= ~(0xf<<18);
        GPIOA->MODER |=(0xa<<18);    //選擇復(fù)用功能
        GPIOA->AFR[1] &=~(0xff<<4);  //清零
        GPIOA->AFR[1] |=(0x77<<4);   //選擇USART1 復(fù)用
       
        /*****串口驅(qū)動(dòng)配置***********/
        RCC->APB2ENR |= (0x1<<4);  //打開串口時(shí)鐘
        USART1->CR1  |= (0x1<<13);
        USART1->CR1  &= ~(0x1<<10);
        USART1->CR1  &= ~(0x1<<0);
        USART1->CR1  |= (0x1<<3);  //打開發(fā)送器
        USART1->CR1  |= (0x1<<2);  //打開接收器
       
        /*******波特率的配置********/
        #ifdef  OVER8   //采用8倍采樣
                USART1->CR1 |= (0x1<<15);
                over8 = 1;
       
        #else          //采用16倍采樣
                USART1->CR1 &= ~(0x1<<15);
                over8 = 0;
       
        #endif
       
        USARTDIV=(float)84000000/((8*(2-over8))*bound);
        DIV_Mantivssa = USARTDIV;
       
        DIV_Fraction=(USARTDIV-DIV_Mantivssa)*(8*(2-over8));
       
        USART1->BRR = (DIV_Mantivssa<<4 | DIV_Fraction);  //寫入計(jì)算好的小數(shù)波特率
}

//串口發(fā)送函數(shù)
void USART1_sendbyte(u8 data)
{
                        //等待數(shù)據(jù)發(fā)送完成
                        while((USART1->SR & (0x1<<6))==0);
                        //發(fā)送該次數(shù)據(jù)
                        USART1->DR = data;
                               
}

//串口接收函數(shù)
u8 USART1_recbyte(void)
{
                        u8 data = 0;
       
                        //等待數(shù)據(jù)接收完成
                        while((USART1->SR & (0x1<<5))==0);
                        //接收該次數(shù)據(jù)
                        data = USART1->DR;
       
                        return data;                               
}







回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表