STM32 库函数编写程序

来源:互联网 发布:python 字符串变json 编辑:程序博客网 时间:2024/06/05 08:20
#include "stm32f10x.h"void RCC_Configuration(void);//首先设置系统时钟为8MHZvoid GPIO_Configuration(void);void USART_Configuration(void);void delay1ms(u16 t){    u16 i,j;   for(i=0;i<t;i++)     for(j=1000;j>0;j++); }   int main(void){   u8 i,data='A';    RCC_Configuration();    GPIO_Configuration();  USART_Configuration();    for(i=0;i<30;i++){USART_SendData(USART1, data);  //发送数据    data++;    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);//USART_SR的TC置一,表示发送数据完成;否则没有完成;} return 0; }void RCC_Configuration(void)//系统时钟设置,应用库函数编程过程{//----------使用外部RC晶振-----------RCC_DeInit();//初始化为缺省值RCC_HSEConfig(RCC_HSE_ON);//使能外部的高速时钟 while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);//等待外部高速时钟使能就绪RCC_HCLKConfig(RCC_SYSCLK_Div1);//HCLK = SYSCLKRCC_PCLK2Config(RCC_HCLK_Div1);//PCLK2 =  HCLKRCC_PCLK1Config(RCC_HCLK_Div2);//PCLK1 = HCLK/2RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//PLLCLK = 8MHZ * 9 =72MHZ,系统给外设的时钟fpclkxRCC_PLLCmd(ENABLE);//Enable PLLCLKwhile(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);//Wait till PLLCLK is ready    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//Select PLL as system clockwhile(RCC_GetSYSCLKSource()!=0x08);//Wait till PLL is used as system clock source//---------打开相应外设时钟--------------------RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能APB2外设的GPIOA的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能APB2外设的GPIOC的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); }void GPIO_Configuration(void)//复用引脚设置{  GPIO_InitTypeDef GPIO_InitStructure;  /* Configure USARTx_Tx as alternate function push-pull */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//复用上拉  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  GPIO_Init(GPIOA, &GPIO_InitStructure);  /* Configure USARTx_Rx as input floating */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//浮空输入  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  GPIO_Init(GPIOA, &GPIO_InitStructure);}void USART_Configuration(void)//复用引脚设置{USART_InitTypeDef USART_InitStructure;USART_InitStructure.USART_BaudRate = 9600;//波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b;  //8位数据USART_InitStructure.USART_StopBits = USART_StopBits_1;       //停止位1位USART_InitStructure.USART_Parity = USART_Parity_No;          //不需要奇偶校验USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None;//不需要硬件流控制USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;//发送使能,接收使能USART_Init(USART1, &USART_InitStructure);//初始化    USART_Cmd(USART1, ENABLE);  //UE使能}

                                             
0 0