实训项目<基于stm32处理器的蓝牙小票打印机>
//---------------------------------------
第2天
今日任务:
1.stm32处理器工程模板建立.
2.stm32处理器第1个程序--点亮一个灯.
//---------------------------------------
一.工程模板建立
有两种代码书写风格:调用官方提供的库函数操作硬件;
直接读写寄存器操作硬件;
1.寄存器操作工程模板的建立.
stm32固件库v3.5建工程_信盈达20160512.pdf
2.工程的配置.
3.程序在线下载.
二.stm32 处理器介绍
内核+外部设备 = 集成芯片(MCU)
1. M3是什么?
全称是 cortex-m3,
是英国ARM公司,一类处理器名称.
还有类似 cortex-m0,
cortex-m4,cortex-m7;
2.stm32 是什么?
STM :意法半导体微电子有限公司,生产的
32位处理器,基于arm公司cortex-m内核系列.
3.stm32分类.
<stm32中文手册.pdf> 第2页
4.stm32功能说明.
<stm32中文手册.pdf> 第4页
本次实训用到功能:
(1)第6章 复位和时钟
(2)第8章 GPIO
(3)第15章 基本定时器
(4)第9章 中断
(5)第25章 USART通信接口
(6)第23章 SPI接口
三.stm32 时钟控制
<stm32中文手册.pdf> 56页 时钟树
SYSCLK上电后默认是8MHz,
可以设置寄存器倍频到72Mhz.
1.怎样把时钟提升至72Mhz?
(1)修改 system_stm32f10x.c 第110~115行的速度定义;
#define SYSCLK_FREQ_72MHz 72000000
(2)查看启动代码中,是否调用 SystemInit 函数.
这个函数在 system_stm32f10x.c 第212行已经写好,
它会根据宏定义设置时钟.
2.怎样把外设模块的时钟使能?
所有外设由三个寄存器控制使能/不使能:
(1)AHB外设时钟使能 RCC_AHBENR(69页)
(2)APB2外设时钟使能 RCC_APB2ENR(70页)
举例1:使能GPIOA组时钟
RRC->APB2ENR |= (1<<2); //把bit2置1
举例2:使能GPIOA,GPIOB组时钟
RRC->APB2ENR |= (1<<2)|(1<<3);
//把b2,b3置1
(3)APB1外设时钟使能 RRC_APB1ENR(71页)
四.GPIO端口操作
有8种工作模式:
数字输入功能: 输入浮空
输入上拉
输入下拉
数字输出功能:推挽输出
开漏输出
模拟输入功能:电压测量,电流测量
手机充电检测
引脚特殊功能: USB数据线,串口数据线
推挽式复用输出功能
开漏式复用输出功能
1.怎样配置某个端口的工作模式,8选1?
每个端口用4bit配置,
与两个寄存器有关:
(1)配置低寄存器 GPIOx_CRL(113页)
配置端口0~7
(2)配置高寄存器 GPIOx_CRH(114页)
配置端口8~15
详细组合,参考106表格.
举例:把PA0配置为数字推挽输出模式
GPIOA->CRL &= 0xFFFFFFF0; //清空b3~b0
GPIOA->CRL |= 0x00000003; //设为0011
2.在数字输出模式下,怎样让端口输出高电平或低电平?
相关寄存器:
(1)输出数据寄存器 GPIOx_ODR(115页)
(2)位置1寄存器 GPIOx_BSRR(115页)
GPIOA->BSRR = 1<<1; //把PA1输出1,其它不变
(3)位清0寄存器 GPIOx_BRR(115页)
GPIOA->BRR = 1<<1; //把PA1输出0,其它不变
3.在数字输入模式下,怎样得到端口输入的电平?
4.在特殊功能模式,怎样控制端口输入/输出?
比如 USB数据收发.
http://blog.csdn.net/lucasxu01/article/details/51645250