实践课程-PRO2-Day3

 实训项目<基于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~b0
       GPIOA->CRL |= 0x00000003; //设为0011


      举例2:把PA9配置为数字推挽输出模式

 

       GPIOA->CRH &= 0xFFFFFF0F; //清空b4~b7
       GPIOA->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>
打印机步进电机控制,走纸.








 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许进进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值