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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3832|回復: 0
打印 上一主題 下一主題
收起左側

基于STM32F407的串口驅動程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:330391 發表于 2018-10-11 13:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "usart1.h"//自身的頭文件


/*******************
函數名: USART1_init
函數返回值: 無
函數參數: U32 bound:設置的botelv
函數功能: 實現USART1的初始化函數
函數描述:

********************/
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);    //選擇復用功能
        GPIOA->AFR[1] &=~(0xff<<4);  //清零
        GPIOA->AFR[1] |=(0x77<<4);   //選擇USART1 復用
       
        /*****串口驅動配置***********/
        RCC->APB2ENR |= (0x1<<4);  //打開串口時鐘
        USART1->CR1  |= (0x1<<13);
        USART1->CR1  &= ~(0x1<<10);
        USART1->CR1  &= ~(0x1<<0);
        USART1->CR1  |= (0x1<<3);  //打開發送器
        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);  //寫入計算好的小數波特率
}

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

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







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表