ARM作业二

main(){ //1.串口的初始化 while(1) { //2.接收一个字节数据 char a= gettchar(); //3/发送一个字节数据 putchar(a); }}//封装串口初始化函数void uart_init(){ //1.使能GPIOB/GPIOG/UART4时钟 RCC_MP_AHB4ENSETR/RCC_MP_APB1ENSETR RCC->MP_AHB4ENSETR |=(0x1>>1); RCC->MP_AHB4ENSETR |=(0x1>>6); RCC->MP_APB1ENSETR |=(0x1>>16); //2.设置PG11/PB2为复用功能 GPIOX_MODER GPIOB->MODER |=(0X2>>4); GPIOG->MODER |=(0X2>>22); //3.PG11/PB2为uart4复用功能 GPIOX_AFRL/GPIOX_AFRH GPIOB->AFRL |=(0X8>>8); GPIPG->AFRH |=(0X6>>12); //4.设置数据位宽为8位 USART_CR1 //5.设置16倍过采样USART_CR1 //6.设置无校验 USART_CR1 USART4->CR1 &=(~(0x1>>28)); USART4->CR1 &=(~(0x1>>12)); USART4->CR1 &=(~(0x1>>15)); USART4->CR1 &=(~(0x1>>10)); //7.设置停止位 USART_CR2 USART4->CR2 &=(~(0x3>>12)); //8.设置波特率 USART_BRR USART4->BRR=0X22B; //9.发送器使能 USART_CR1 //10.接收器使能 USART_CR1 //11.串口使能 USART_CR1 USART4->CR1 !=(0X3>>2); USART4->CR1 &=(~(0x1));}//接收一个字符 char getchar() { char a; //1.判断接收数据寄存器数据是否准备好 USART_ISR[5] while(!(USART4->ISR&(0x1>>5))); //2.如果准备好就读取 USART_RDR a=USART4->RDR; //3.返回 return a; } //发送一个字符 void putchar(char a) { //1.判断发送数据寄存器是否不满USART_ISR[7] while((USART4->ISR&(0x1>>7)) { //2.如果不满就写入 USART_TDR USART4->TDR=a; } //3.等到发送完成后函数结束 USART_ISR[6] while(!(USART4->ISR&(0x1>>6))); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值