请选择 进入手机版 | 继续访问电脑版
查看: 1022|回复: 1

[分享] (kinetis K60)UART寄存器 串口收发数据

[复制链接]
  • TA的每日心情
    开心
    前天 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3296

    主题

    6541

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31903
    最后登录
    2024-3-28
    发表于 2020-10-20 16:33:53 | 显示全部楼层 |阅读模式

    (kinetis K60)UART寄存器 串口收发数据


    11.png
    1. #include "common.h"
    2. #include "uart.h"
    3. #include "isr.h"

    4. void UART4_Init(U32);                     
    5. void delay(long count);
    6. void Uart4_SendByte(U8 Char);


    7. void main (void)
    8. {
    9.   char str[]="hello cortex-m4  ";
    10.   U8 i;
    11.   
    12.   DisableInterrupts;  
    13.   UART4_Init(57600);
    14.   EnableInterrupts;
    15.   
    16.   while(1)
    17.   {
    18.     for(i=0; str[i]!='\0'; i++)
    19.       Uart4_SendByte(str[i]);
    20.     delay(7000000);
    21.   }
    22. }

    23. void delay(long count)
    24. {
    25.   while(count--)
    26.       asm("nop");
    27. }

    28. void UART4_Init(U32 BaudRate)
    29. {
    30.   U16 ubd, brfa;

    31.   U8 temp;
    32.    
    33.   PORTC_PCR15 = PORT_PCR_MUX(0x3);   //引脚使能
    34.   PORTC_PCR14 = PORT_PCR_MUX(0x3);
    35.   SIM_SCGC1 |= SIM_SCGC1_UART4_MASK;   //时钟使能


    36.   UART4_C2 &= ~((1<<2) | (1<<3)); //禁止发送接收   控制寄存器C2
    37.   
    38.   UART4_C1 = 0;  //控制器C1 全部使用默认配备

    39.   ubd = (U16)((50000000)/(BaudRate * 16));   //波特率设置

    40.   UART4_BDH = (U8)ubd>>8;  
    41.   UART4_BDL = (U8)(ubd);
    42.   
    43.   
    44.   brfa = (((50000000)/(BaudRate * 16)) - (ubd * 32));  //波特率微调 1/32的增量

    45.   temp = UART4_C4 & ~(UART_C4_BRFA(0x1F));
    46.   UART4_C4 = temp | UART_C4_BRFA(brfa);
    47.   

    48.   UART4_C2 |= ((1<<2) | (1<<3));  //允许发送接收

    49.   return;
    50. }

    51. void Uart4_SendByte(U8 Char)
    52. {

    53.     while(!(UART_S1_REG(UART4_BASE_PTR) & UART_S1_TDRE_MASK)); //UARTx_S1状态寄存器
    54.     UART4_D = Char;
    55.     return;
    56. }
    复制代码
    12.png
    串口接收函数

    1. U8 Uart4_Receive(void)
    2. {
    3.     U8 Receivechar;
    4.     while(!(UART_S1_REG(UART4_BASE_PTR) & UART_S1_RDRF_MASK));       //查询是否接受到数据
    5.     Receivechar  =   UART4_D;                    //接受到8位的数据
    6.     return(Receivechar);
    7. }
    复制代码
    13.png



    签到签到
    回复

    使用道具 举报

    该用户从未签到

    25

    主题

    125

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    318
    最后登录
    2021-1-17
    发表于 2020-10-20 23:01:15 | 显示全部楼层
    Examples 展示?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-28 18:14 , Processed in 0.114116 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表