ARM (uart串口)

  1 #ifndef ww                                                            |  1 #include "uart4.h"                                                                                   |  1 #ifndef __STM32MP1XX_UART_H__
  2 #define ww                                                            |  2                                                                                                      |  2 #define __STM32MP1XX_UART_H__
  3                                                                       |  3 //uart4_rx-->pb2                                                                                     |  3 
  4 #include "stm32mp1xx_rcc.h"                                           |  4 //uart4_tx-->pg11                                                                                    |  4 typedef struct {
  5 #include "stm32mp1xx_gpio.h"                                          |  5 //rcc/gpio/uart4 初始化                                                                              |  5     volatile unsigned int CR1;
  6 #include "stm32mp1xx_uart.h"                                          |  6 void hal_uart4_init()                                                                                |  6     volatile unsigned int CR2;
  7                                                                       |  7 {                                                                                                    |  7     volatile unsigned int CR3;
  8 //rcc/gpio/uart4 初始化                                               |  8     //111:rcc控制器初始化                                                                            |  8     volatile unsigned int BRR;
  9 void hal_uart4_init();                                                |  9     //1:使能gpio b                                                                                   |  9     volatile unsigned int GTPR;
 10                                                                       | 10     //rcc基地址:0x50000000  地址偏移 0xa28                                                          | 10     volatile unsigned int RTOR;
 11 //发送一个字符                                                        | 11     //MP_AHB4ENSETR;    // 0xA28                                                                     | 11     volatile unsigned int RQR;
 12 void hal_put_char(const char str);                                    | 12     //gpio b使能在rcc寄存器第1位 置1                                                                 | 12     volatile unsigned int ISR;
 13 //发送一个字符串                                                      | 13     RCC->MP_AHB4ENSETR |= (0x1<<1);                                                                  | 13     volatile unsigned int ICR;
 14 void char hal_get_char();                                             | 14                                                                                                      | 14     volatile unsigned int RDR;
 15                                                                       | 15     //2:使能gpio g                                                                                   | 15     volatile unsigned int TDR;
 16 //接受一个字符串                                                      | 16     //gpio b使能在rcc寄存器第6位 置1                                                                 | 16     volatile unsigned int PRESC;
 17 char hal_get_char();                                                  | 17     RCC->MP_AHB4ENSETR |= (0x1<<6);                                                                  | 17 }uart_t;
 18 //接受一个字符串                                                      | 18                                                                                                      | 18 
 19 char* hal_get_string();                                               | 19     //3:使能uart4                                                                                    | 19 #define USART1  ((uart_t *)0x5C000000)
 20                                                                       | 20     //rcc基地址:0x40010000 地址偏移 0xa00                                                            | 20 #define USART2  ((uart_t *)0x4000E000)
 21                                                                       | 21     // MP_APB1ENSETR;   // 0xA00                                                                     | 21 #define USART3  ((uart_t *)0x4000F000)
 22                                                                       | 22     // uart4在rcc寄存器16位 置1                                                                      | 22 #define USART4  ((uart_t *)0x40010000)
 23                                                                       | 23     RCC->MP_APB1ENSETR |= (0x1<<16);                                                                 | 23 #define USART5  ((uart_t *)0x40011000)
 24                                                                       | 24                                                                                                      | 24 #define USART6  ((uart_t *)0x44003000)
 25                                                                       | 25                                                                                                      | 25 #define USART7  ((uart_t *)0x40018000)
 26                                                                       | 26     //222:gpio控制器初始化                                                                           | 26 #define USART8  ((uart_t *)0x40019000)
 27                                                                       | 27     //1:gpio b设置引脚功能模式为复用模式                                                             | 27 
 28                                                                       | 28     //gpio b寄存器基地址:0x50003000 地址偏移0x0000                                                  | 28 #endif // __STM32MP1XX_UART_H__                                                                                                                                                                                                                                                                                                                                        
 29                                                                       | 29     //  MODER;   // 0x00                                                                             |~                                                                                                                                                                                                                                                                                                                                                                          
 30                                                                       | 30     // 寄存器[5:4]位由11设置为10                                                                     |~                                                                                                                                                                                                                                                                                                                                                                          
 31                                                                       | 31     // 先清零                                                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
 32                                                                       | 32     RCC->MODER &= (~(0x3)<<4);                                                                       |~                                                                                                                                                                                                                                                                                                                                                                          
 33 #endif                                                                | 33     //再置1                                                                                          |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 34     RCC->MODER |= (0x1<<5);                                                                          |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 35                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 36     //2:gpio g设置引脚功能模式为复用模式                                                             |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 37     //gpio g寄存器基地址:0x50008000 地址偏移0x0000                                                  |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 38     //  MODER;   // 0x00                                                                             |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 39     // 寄存器[23:22]位由11设置为10                                                                   |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 40     // 先清零                                                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 41     RCC->MCO1CFGR &= (~(0x3)<<22);                                                                   |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 42     //再置1                                                                                          |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 43     RCC->MCO1CFGR |= (0x1<<23);                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 44                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 45     //3:GPIOx_AFRL寄存器:设置对应引脚复用功能                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 46     //GPIOB基地址 + 偏移地址 = 0x50003000 + 0x20=0x50003020                                          |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 47     // AFRL;    // 0x20                                                                              |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 48     //寄存器[11:8]改成1000                                                                           |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 49     //先清0 再置1                                                                                    |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 50     RCC->AFRL &= (~(0xF)<<8);                                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 51     RCC->AFRL |= (0x1<<11);                                                                          |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 52                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 53     //4:GPIOx_AFRH寄存器:寄存器作用:设置对应引脚复用功能                                            |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 54     //GPIOg基地址 + 偏移地址 = 0x50003000 + 0x24 =  0x50003024                                       |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 55     //AFRH;    // 0x24                                                                               |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 56     //寄存器[15:12]改成0110                                                                          |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 57     //先清0 再置1                                                                                    |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 58     RCC->AFRH &= (~(0xF)<<12);                                                                       |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 59     RCC->AFRH |= (0x3<<13);                                                                          |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 60                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 61     //USART_CR1寄存器:串口控制寄存器 作用:设置初始化相关操作                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 62     //基地址 + 偏移地址 = 0x40010000 + 0x00 = 0x40010000                                             |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 63     //USART4_CR1[28][12] = 00 ========> 设置8位数据位                                                |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 64     RCC->CR1 &= (~(0x1)<<12);                                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 65     RCC->CR1 &= (~(0x1)<<28);                                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 66     //USART4_CR1[15] = 0 ========> 设置16倍采样率                                                    |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 67     RCC->CR1 &= (~(0x1)<<15);                                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 68     // USART4_CR1[10] = 0  ========> 设置无校验位                                                    |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 69     RCC->CR1 &= (~(0x1)<<10);                                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 70     //USART4_CR1[3] = 1  ========> 设置发送位使能                                                    |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 71     RCC->CR1 |= (0x1<<3);                                                                            |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 72     //USART4_CR1[2] = 1  ========> 设置接收位使能                                                    |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 73     RCC->CR1 |= (0x1<<2);                                                                            |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 74     //USART4_CR1[0] = 1 ========> 设置串口使能                                                       |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 75     RCC->CR1 |= (0x1<<0);                                                                            |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 76                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 77                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 78     //USART_CR2寄存器:串口控制寄存器 作用:设置停止位                                                |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 79     //基地址 + 偏移地址 = 0x40010000 + 0x04 = 0x40010004                                             |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 80     //USART4_CR2[13][12] = 00 ========> 设置串口1位停止位                                            |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 81     RCC->CR2 &= (~(0x3)<<12);                                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 82                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 83     //USART_PRESC寄存器:设置串口分配                                                                 |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 84     //基地址 + 偏移地址 = 0x40010000 + 0x2C = 0x4001002C                                             |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 85     //设置串口不分频 USART4_PRESC[3:0] = 0000                                                        |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 86     RCC->PRESC &= (~(0xF)<<0);                                                                       |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 87     RCC->PRESC |= (0x3<<13);                                                                         |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 88                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 89     //分析USART_BRR寄存器:设置串口波特率                                                             |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 90     //基地址 + 偏移地址 = 0x40010000 + 0x0C = 0x4001000C                                             |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 91     //串口波特率为115200,串口时钟主频为64000000HZ,16倍采样率                                       |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 92     RCC->BRR = 0x22B;                                                                                |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 93                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 94     //uart4控制器初始化                                                                              |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 95                                                                                                      |~                                                                                                                                                                                                                                                                                                                                                                          
~                                                                         | 96 }    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值