文档介绍:STM32F103单片机编程入门
一款单片机入门,至少四样:时钟、端口、定时、串口、中断。
系统时钟RCC
系统内部有8M_RC晶振和32678Hz_RC晶振有大约2%的温飘。当外部有8M晶振时,自动选择外部晶振,失效时自动切换成内部。程序自动倍频成72M。如果用于通信最好加个外部晶振。判断是否使用外部晶振的方法:短接外部晶振引脚观察工作情况。
分为两个桥,对应不同的外设,每个外设又可以单独设定时钟。
初步学****先不用单独设定,均选用系统时钟72M。可根据情况做一步分频。
用到某外设时,配置RCC(打开外设时钟),一般只有一句指令。一般临时查找。呵呵,我也没找到好办法。
GPIO:RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);
USART:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
Timer2:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
端口GPIO
端口配置思路:
1,先定义一个结构体配置成员参数值,
类型是GPIO_InitTypeDef,下划线是结构体名;结构体名是GPIO_InitStructure:名称可以自定义。在后面利用参数初始化函数时要一致。
2,打开相对应的端口时钟RCC。
3,声明要配置的管脚,可以用“|”复选
4,配置模式,4种输入,4种输出
5,配置管脚频率,一般都是50Mhz
6,最后调用函数GPIO_Init(GPIOA, &GPIO_InitStructure);第2个参数是,结构体地址指针。
Eg:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);
= GPIO_Pin_13; =GPIO_Mode_Out_PP;
= GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
串口USART
串口配置思路:
1,定义结构体,类型是USART_InitTypeDef;
2,打开串口时钟,可以选择和端口GPIO一起
3,设置波特率,—————省去了复杂的烦人的计算
4,设置字长。8位?9位?
5,设置停止位。1位?2位?
6,设置校验位,奇偶?无?
7,设置硬件流(调制解调器用)————用不到设None就行
8,串口工作模式:收?发?都有?
9,调用函数 USART_Init(USART1, &USART_InitStructure); 配置串口
10,开启串口中断USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);或USART_IT_TXE, ENABLE);收发中断的使能。
11,中断响应函数void USART