程序中的延时函数Delay_Ms(),USART_Init()和EEPROM_Init()函数也帮我写下吧
时间: 2023-06-11 12:07:49 浏览: 104
好的,以下是延时函数Delay_Ms()的代码:
```
void Delay_Ms(uint32_t n)
{
SysTick->LOAD = 9*n; //设置定时器装载值,每个节拍为10us
SysTick->VAL = 0x00; //清空计数器
SysTick->CTRL = 0x01; //开启定时器
while(!(SysTick->CTRL&(1<<16))); //等待时间到达
SysTick->CTRL = 0x00; //关闭定时器
SysTick->VAL = 0X00; //清空计数器
}
```
以下是USART_Init()函数的代码:
```
void USART_Init(uint32_t baud_rate)
{
RCC->APB2ENR |= 1<<14; //使能USART1时钟
RCC->APB2ENR |= 1<<2; //使能GPIOA时钟
GPIOA->CRH &= 0xFFFFF00F; //清零CRH的第13~16位和第9~12位
GPIOA->CRH |= 0x000008B0; //设置CRH的第13~16位和第9~12位
USART1->BRR = 72000000/baud_rate; //设置波特率
USART1->CR1 |= 1<<3; //使能发送
USART1->CR1 |= 1<<2; //使能接收
USART1->CR1 |= 1<<13; //使能USART1
}
```
最后是EEPROM_Init()函数的代码:
```
void EEPROM_Init(void)
{
RCC->AHB1ENR |= 1<<6; //使能GPIOG时钟
GPIOG->MODER &= 0xFFFFFF3F; //将GPIOG的第7~10位清零
GPIOG->MODER |= 0x00000040; //将GPIOG的第7~10位设置为输出模式
GPIOG->ODR |= 1<<6; //将PG6输出高电平
}
```
阅读全文