实训项目<基于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页表格.
举例1:把PA0配置为数字推挽输出模式
GPIOA->CRL &= 0xFFFFFFF0; //清空b3~b0GPIOA->CRL |= 0x00000003; //设为0011
举例2:把PA9配置为数字推挽输出模式
GPIOA->CRH &= 0xFFFFFF0F; //清空b4~b7GPIOA->CRH |= 0x00000030; //设为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.在数字输入模式下,怎样得到端口输入的电平?
在输入模式下,读取数据输入可得到16个引脚的电平.
相关寄存器:
(1)端口输入数据寄存器 GPIOx_IDR(114页)
示例1:读取PA0~15的输入电平
unsigned short dat;
dat = GPIOA->IDR;
示例1:只关心PA1的输入电平
unsigned short dat;
unsigned short dat;dat = GPIOA->IDR; //if((dat&0x0002)==0x0000)//PA1==0?//{...}//if(!(dat&0x0002))//PA1==0?推荐使用//{...}if( !(dat&(1<<3)) )//PA3==0?强烈推荐使用{...}
4.在特殊功能模式,怎样控制端口输入/输出?
比如 USB数据收发.
是由特殊功能寄存器自动控制端口输入/输出,
一般向发送寄存器写,要输出;
从接收寄存器读,要输入;
五.实践练习
开发硬件连接如下:
LED1 -- 接PA1,
K1 -- 接PB8,
写段程序,第1次按下K1,led亮,
再次按下K1, led灭;
预习
<JRP-2RA微型热敏打印机芯规格书 NEW.pdf>
打印机步进电机控制,走纸.