当前位置: 首页> 教育> 就业 > arm_uart4实验

arm_uart4实验

时间:2025/7/11 0:54:00来源:https://blog.csdn.net/jihnbjkn/article/details/140109947 浏览次数:0次
#include "uart4.h"                       //UART                                   //初始化                                 
void hal_uart4_init()                    
{                                        //rcc_init                           //使能GPIOB组控制器[1]=1         RCC->MP_AHB4ENSETR |= (0x1 << 1);//使能GPIOG组控制器[6]=1         RCC->MP_AHB4ENSETR |= (0x1 << 6);//使能uart组控制器[16]=1  RCC->MP_APB1ENSETR |=(0x1 << 16);       //gpio_init  GPIOB->MODER &= (~(0x3 << 4));GPIOB->MODER |= (0x1 << 5);GPIOG->MODER &= (~(0x3 << 22));GPIOG->MODER |= (0x1 << 23);GPIOB->AFRL &= (~(0xf << 8));GPIOB->AFRL |= (0x1 << 11);GPIOG->AFRH &= (~(0xf << 12));GPIOG->AFRH |= (0x3 << 13);//uart_initif(USART4->CR1 & 0x1){USART4->CR1 &= (~(0x1 << 0));}USART4->CR1 &=(~(0x1 << 28));USART4->CR1 &=(~(0x1 << 12));USART4->CR1 &=(~(0x1 << 15));USART4->CR1 &=(~(0x1 << 10));USART4->CR1 |=(0x1 << 3);USART4->CR1 |=(0x1 << 2) ;USART4->CR1 |= 0x1;USART4->CR2 &=(~(0x1 << 12));USART4->PRESC &= (~(0xf<<0));  USART4->BRR=0x22b;                    
}                                        
//发送一个字符                           
void hal_put_char(const char str)        
{                                        while (!(USART4->ISR &(1<<7)));USART4->TDR=str;if(str=='\n'){hal_put_char('\r');}}                                        
//接受一个字符                           
char hal_get_char()                      
{                                        char data;while(!(USART4->ISR &(1<<5)));data=(char)USART4->RDR;return data;}                                        
//发送一个字符串                         void hal_put_string(const char* string)  
{                                        while(*string !='\0'){hal_put_string(*string);string++;}}                                        
//接一个字符串                         
char* hal_get_string()                   
{                                        int i=0;char buff[50];for(;i<49;i++){buff[i]=hal_get_char();hal_put_char(buff[i]);if (buff[i] == '\r'){break;}}buff[i]='\0';hal_put_char('\n');return buff;}                                        
#include "uart4.h"int main()
{hal_uart4_init();//hal_put_string("uart4 test");while(1){hal_put_char(hal_get_char()+1);//hal_put_string(hal_get_string());}
}
#ifndef __UART_H__
#define __UART_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_uart.h"
void hal_uart4_init();void hal_put_char(const char str);char hal_get_char();void hal_put_string(const char* string);
char* hal_get_string();
#endif

关键字:arm_uart4实验

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: