stm32f103rbt6_4

一 回忆昨天的内容

按键驱动程序 GPIO 
button_init
button_status
按键是GPIO的输入功能
输入相当于检测

定时器 
超时时间 频率 计数值
计数范围  0~16M-1
透明   

USB驱动

二  位带  
2.1 bitband
    C语言回顾:
    1.指针
      int  a;
      a = 100;
      (&a) = 100;
      *( (int *)  0x1000000 )  =  200;
      
      地址  (volatile int *) 0x10000000;
      访问  *(volatile int *)0x10000000;

    2.位操作
      //不行  影响其他的位
       *(volatile int *) 0x1000000 =0x01000000;//bit  24位置1
                                  //bit  25位置0

       //正确做法
       *(volatile int *) 0x10000000 &= 0xfcffffff;//1100
       *(volatile int *) 0x10000000   |= 0x01000000;//0001

      //标准做法
      * (volatile int *) 0x10000000 &= ~( 3 << 24 );
      * (volatile int *) 0x10000000   |= 1<< 24;
      
      例如:想要将0x12345678 这个地址的第9位置1,第10~12位置0
      *   (volatile int *)  0x12345678   |= 1 << 9;
      * (volatile int *)0x12345678 &=~ ( 7 << 10);
      
    3.结构体  联合 与  枚举
    struct Student{
        unsigned int x : 1;
        unsigned int y : 2;
        unsigned int z : 3;
    };结构体中成员变量冒号后的数字代表该成员变量管理的位数

    union Unit {
        char c;
        struct Student s;
    };
    union Unit u;
    u.c=13;//0 0 0 0 1 1 0 1
    printf("%d\n",u.s.x);// 1
    printf("%d\n",u.s.y);// 2
    printf("%d\n",u.s.z);// 1
    
    位域
    
    struct GPIOA
    {
        unsigned int PA1 :2;
        unsigned int PA2 :2;
            .....
        unsigned int PA15 :2;
    };
    typedef enum{
        OUTPUT = 0x100;
        INPUT ;
        AF ;
        AIN ;
    };
    struct GPIOA a;
    a.PA9 = OUTPUT;
    a.PA0 = INPUT;
    
    
    《权威指南.pdf》p84
    内存的总容量           4G
    片上的SRAM          512M
    片上的外设             512M
    
    位带区 0x20000002 bit4 位 对应的位带别名区的地址是什么?
    0x2200004c
    
    #define BITBAND (addr,bitnum) 
    (addr &0xf0000000) +0x20000000 + (( addr & 0xfffff )<<5 +BITNUM <<2)    
    
    #define MEMADDR  (addr)
    *(volatile int *)  (addr)
    //通过上述宏可以将16进制的数转换成地址使用
    
    #define BIT_BAND (addr,bitnum)
    MEMADDR(BITBAND(addr,bitnum))
    
    位带操作多用于低端芯片
    位域操作多用于高端芯片
    
2.2 内存管理
    
    进程 :进程是程序运行的实例
    Linux  
    
    每个进程都有自己独立的4G内存空间
    参见图 内存管理
    
三  串口
    3.1 有线通信及无线通信        
    有线通信
    
        串口:
        RS232:电气特性
            逻辑0: +3V ~ +15V
            逻辑1:  -3V ~ -15V
            传输距离:< 10m
        RS485:电气特性
            工业级串口  工控领域中用的多
            采用差分信号 传输的时候,用两根线。

            TTL 电平
            低电平 < 0.8V
            高电平 > 2.4V
            
        以太网    4层    
        M-BUS    远程抄表
        PLC        电力线通信
        
    无线通信:
        短距无线通信:
            蓝牙
            WIFI
            红外
            ZigBee
            Nrf
        长距无线通信:
            2G   3G   4G   5G   6G
            移动蜂窝网络

            低功耗的局域网络
            Lora
            NB-IOT (窄带物联网)
            
    3.2 串行通信    

        串行接口简称串口
        板子链接上PC上之后,右键计算机--》  管理 --》 设备管理器 --》端口 (com口)
    
        串口的工作模式:
        单工:任何时候数据只能朝一个方向传输
        半双工:数据可以双向传输,但是任何一个时刻只能朝一个方向。
        全双工:数据可以同时朝两个方向传输。

        


    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值