#include &quot;stm32f10x.h&quot;void init(){ uint8_t temp=0; RCC->CR |= RCC_CR_HSEON ; while(!(RCC->CR>>17)); FLASH->ACR|=0x32; RCC->CFGR |= RCC_CFGR_PPRE1_DIV2 ; RCC->CFGR |= RCC_CFGR_PLLMULL9; RCC->CFGR |= RCC_CFGR_PLLSRC; RCC->CR |= RCC_CR_PLLON; while(!(RCC->CR>>25)) ; RCC->CFGR|=0x00000002; //PLL作为系统时钟 if(temp!=0x02) //等待PLL作为系统时钟设置成功 { temp=RCC->CFGR>>2; temp&=0x03; } RCC->APB2ENR |= (1<<14); //使能uart1时钟 RCC->APB2ENR |= (1<<2); //使能PTA时钟 GPIOA->CRH =0; GPIOA->CRH |=(GPIO_CRH_MODE9+GPIO_CRH_CNF9_1+GPIO_CRH_CNF10_1);//A9推挽输出,A10上下拉输入 RCC->APB2RSTR|=1<<14; //复位串口1 RCC->APB2RSTR&=~(1<<14);//停止复位 USART1->BRR |= 0X1D6; //波特率// USART1->CR1=0; USART1->CR1 |= (1<<13); // USART模块使能// USART1->DR = 2;// while(!(USART1->SR>>7));// USART1->CR1 |= 0X0C; }int main(){ init(); while(1) { //USART1->DR = 0; USART1->DR = 0x03; //装载数据 USART1->CR1 |= 0X0C; // 开始发送 while(!(USART1->SR>>7)); //等待移入寄存器 while(!(USART1->SR>>6)); //等待发送完成 USART1->SR&=~(1<<6); //清除标志位 }} |