STM32 库函数编写程序
2016-11-09 22:43
141 查看
#include "stm32f10x.h" void RCC_Configuration(void);//首先设置系统时钟为8MHZ void 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 = SYSCLK RCC_PCLK2Config(RCC_HCLK_Div1); //PCLK2 = HCLK RCC_PCLK1Config(RCC_HCLK_Div2); //PCLK1 = HCLK/2 RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 8MHZ * 9 =72MHZ,系统给外设的时钟fpclkx RCC_PLLCmd(ENABLE); //Enable PLLCLK while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait till PLLCLK is ready RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //Select PLL as system clock while(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使能 }
相关文章推荐
- 编写程序删除一个字符串(不能使用任何操纵字符串的函数,不使用下标)
- 编写一个程序,程序中要调用名为one_three ();函数,······
- 编写一个程序对Largest函数进行测试,找出一组数据的最大值
- STM32单片机串口的深思--主要是接收中断函数的编写
- 编写一个程序,读取键盘输入,直到遇到@符号为止,并回显输入(数字除外),同时将大写字符转换为小写,将小写字符转换为大写(别忘了cctype函数系列)
- 用定义函数来编写程序
- 1.19 编写函数reverse(s)将字符串s中的字符顺序颠倒过来。使用该函数编写一个程序,每次颠倒一个输入行中的字符顺序。
- 用C++编写递归函数GetPower(int x,int y)计算x的y次幂,在同一程序里中针对整型和实型实现两个重载的函数;在主程序中实现输入输出
- 编写程序,实现strcpy()相同功能myStrcpy()函数
- Ruby编写的取得Pyton所有函数并导出到XML文档的程序
- 练习1-15 重新编写1.2节中的温度转换程序,使用函数实现温度转换计算
- 用C++编写函数判别一个数是否是质数,在主程序中实现输入输出
- 编写程序,实现strcmp()相同功能myStrcmp()函数
- 编写程序 分别使用输入 输出 求平均值函数
- 如何编写一个线程安全的程序或者函数库?
- 8.9 编写函数打开文件用于输入,将文件内容读入 string 类型的 vector 容器,每一行存储为该容器对象 的一个元素。8.10 重写上面的程序,把文件中的每个单词存储为 容器的一个元素
- 编写一个程序实现strcmp函数的功能
- 编写程序计算数组元素之和。要求编写函数三次,每次以不同的方法处理数组边界。
- 用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。
- C#调用参数为函数指针的API函数 - 以SetUnhandledExceptionFilter为例编写一个全局异常处理程序