7-1作业

1.实验目的:完成字符收发

led.h

cs 复制代码
#ifndef __GPIO_H__ 
#define __GPIO_H__

#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.h"

//RCC,GPIO,UART初始化
void init();

//字符数据发送
void set_tt(const char str);

//字符数据接收
char ret_tt();

//字符串数据发送
void seting_tt(const char* string);

//字符串数据接收
char reting_tt();


#endif                                            

led.c

cs 复制代码
 #include "led.h"
 
 //PB2,PG11,UART初始化
 void init()
 {
     //PB2,PG11,UART使能
     RCC-> MP_AHB4ENSETR |= (0X1<<1);
     RCC-> MP_AHB4ENSETR |= (0X1<<6);
     RCC-> MP_APB1ENSETR |= (0X1<<16);
 
     //PB2
     GPIOB->MODER |=(0X3<<4);
     GPIOB->MODER &=(~(0X1<<4));
 
     GPIOB->AFRL |=(0X15<<8);
     GPIOB->AFRL &=(~(0X7<<8));
 
     //PG11
     GPIOG->MODER |=(0X3<<22);
     GPIOG->MODER &=(~(0X1<<22));
 
     GPIOG->AFRH |=(0X15<<12);
     GPIOG->AFRH &=(~(0X9<<12));
 }
 
 //发送一个字符
 void set_tt(const char data)
 {
     //数据位
     USART4->CR1 &=(~(0X1<<12));
     USART4->CR1 &=(~(0X1<<28));
 
 
     USART4->CR1 &=(~(0X1<<10));
     USART4->CR1 &=(~(0X1<<15));
 
 
     //设置串口波特率
     USART4->BRR =0X22b;
 
     //设置停止位
     USART4->CR2 &=(~(0X3<<12));
 
     //使能USART 
     USART4->CR1 |=(0X1<<0);
 
     //设置发送位使能
     USART4->CR1 |=(0X1<<3);
 
     //发送数据
     if(USART4->ISR &(0X1<<7))
     {
         USART4->TDR=data;
         if(USART4->ISR &(0X1<<6))
         {
             return;
         }
     }                                                                                                                                            
 }
 
 //接受一个字符
 char ret_tt()
 {
     //数据位
     USART4->CR1 &=(~(0X1<<12));
     USART4->CR1 &=(~(0X1<<28));
 
     USART4->CR1 &=(~(0X1<<10));
     USART4->CR1 &=(~(0X1<<15));
 
 
     //设置串口波特率
     USART4->BRR =0X22b;
 
     //设置停止位
     USART4->CR2 &=(~(0X3<<12));
 
     //使能USART 
     USART4->CR1 |=(0X1<<0);
 
     //设置接受位使能
     USART4->CR1 |=(0X1<<2);
 
     //接受数据
     char data;
     while(1)
     {
         if(USART4->ISR &(0X1<<5))
         {
             data=USART4->RDR;
             return data;
         }
     }
     return 0;
 }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

main.c

cs 复制代码
#include "led.h"

int main()
{
    char data;
    init();
    while(1)
    {
        data=ret_tt();
        set_tt(data);
    }
    return 0;
}                             

2.实验目的:完成字符串收发

相关推荐
深圳老胡36 分钟前
STM32CubeMX 2 与 STM32CubeMX 的主要区别
笔记·stm32·单片机·代码规范
BSD_CGQ43 分钟前
FSR 压力传感器 I2C 接口实战:地址规划与 MCU 软件滤波的工程取舍
嵌入式硬件·机器人·压力传感器·柔性薄膜压力传感器
゛凌乱的记忆づ2 小时前
50元从零到成品:一套AI辅助的嵌入式实战入门教程——IIC篇
人工智能·stm32·单片机·嵌入式硬件
创界工坊工作室3 小时前
54-基于STC89C52控制的智能运输小车设计
stm32·单片机·嵌入式硬件·51单片机·proteus
iCxhust3 小时前
NTC温度测量计算
单片机·嵌入式硬件·51单片机·热力计算
沐欣工作室_lvyiyi3 小时前
基于单片机的汽车智能座舱控制系统的设计与实现(论文+源码)
单片机·嵌入式硬件·汽车·智能座舱
Alinket4 小时前
资源受限 MCU 的 OTA 升级怎么做:差分、签名校验与断点续传
单片机·嵌入式硬件
dtq04244 小时前
嵌入式3 - 外设和GPIO基本概念
单片机·嵌入式硬件
cu1436 小时前
细谈IT65631的具体功能与其应用
c++·单片机·嵌入式硬件
小莞尔6 小时前
【51单片机】【protues仿真】基于51单片机超声波测距仪系统
c语言·单片机·嵌入式硬件·物联网·51单片机