物联网嵌入式

day04笔记

一、c语言回顾

char  arr_t [10];

arr_t是常量,类型是char [10]

typedef char arr_t[10];

arr_t  b[2];

b===>二维数组  char  b[2] [10];

二、GPIO类设备的驱动

led灯        beep蜂鸣器        button   key  按键     remote  红外传感器

2.1 完成beep的驱动程序 
        a) 粗看看硬件 
        b) 细看看电路原理图 
            蜂鸣器的正极接3.3V 
            负极接到三极管上 
            将来需要在基极提供一个高电平, 蜂鸣器就响了 
            
            PC7 === 三极管的基极 
            需要将PC7管脚初始化为推挽输出模式 
            
            使能C组的时钟 
        
        c) 设计接口 
            beep_init ---> pc7 
            GPIO_Init 
            
            beep_on 
            beep_off 
        
      实验步骤:
      1. copy 一份02led, 重命名为03beep 
        2. 在03beep的mylib中, 新建两个文件 beep.c beep.h
        3. 打开03beep的项目工程, 将2中新建的beep.c 添加的项目工程的mylib中 
        
   2.2 按键设备的驱动程序 
        1) 粗看看硬件 
            三个用户按键
             
        2) 按键的硬件电路原理图 
            cpu将来要检测按键的状态 
            按键管脚初始化为输入模式 
            
            key0
            key1 按下的一瞬间, 管脚上呈现低电平, 默认状态呈现高电平  
            故, key0和key1管脚应该初始化为上拉输入 
            
            key2 按下的一瞬间, 管脚上呈现高电平, 默认状态呈现低电平
            故, key2管脚应该初始化为下拉输入 
            
            key0  -----  PC9
            key1  -----     PC8
            key2  -----  PA0 
            
            
        3) 设计驱动程序 
            button_init 
            a) 使能GPIOA组和C组的时钟 
            b) 将PC9 PC8 初始化上拉输入
                 PA0 初始化为下拉输入 
                 GPIO_Init 
            
            button_status 
        
        实验步骤:
        1. copy一份03beep, 重命名为04button 
        2. 在04button的mylib中, 新建两个文件, button.c button.h 
        3. 打开04button的project, 双击mylib, 将2中新建的button.c 添加到项目工程中
        
        需求:三个按键不管谁被按下, 都返回1, 没有被按下的时候, 返回0 
        
        typedef enum
        { Bit_RESET = 0,
          Bit_SET
        }BitAction; 

cpu感知外部事件变化的三种方式:轮询        中断        DMA

1024B = 1KB

1024KB = 1MB                1MB =  0x100000        4MB = 0x400000        16M = 0x1000000        64M = 0x4000000        256M = 0x10000000

1024MB = 1GB                4GB = 0x400000000         4G-1  0xFFFFFFFFF

1024G = 1TB 

1024TB = 1EB

1024EB = .......

1M         0x100000 
    4M         0x400000
    16M         0x1000000
    64M        0x4000000
    256M    0x10000000
    4G        0x100000000
    4G-1  0xFFFFFFFF

发生段错误的原因:1、地址空间漏洞

                                  2、地址空间没有访问权限

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值