菜农群课《实战新唐M0
泾渭分明
》
-----主要内容:BSP包的内容及库的理解 主讲:神农cube
马上开始今天的课程
20:28:56
实战新唐M0
第一讲
20:29:05
第一讲
20:29:05
泾渭分明
20:29:39
上次我在预备试讲中已经简单的
20:29:47
介绍了新唐提供的资源
20:30:01
包括BSP以及三份的手册
20:30:41
三份手册分别是:参考手册,电气特性手册,以及BSP驱动参考
20:31:04
注意,一般我们参看参考手册去了解对应结构与寄存器
20:31:23
利用BSP驱动库来进行简单有效的操作
20:31:32
且不提BSP效率有多高
20:31:49
但是我认为这是新手最好的入门途径
20:32:03
首先先打开BSP中文手册
20:32:18
我们来看下传说中的库
20:32:39
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-28207.png
20:32:47
这就是我在使用的驱动参考
20:32:58
我已经发现和新版本的库对不上号了的
20:33:11
因为这里不是英语高手们的园地
20:33:26
设身处地的思考过后
20:33:35
我还是决定用中文手册来讲
20:34:01
但是也希望各位能准备好英文手册备用
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-3229.png
20:34:14
因为有些东西需要去里面寻找
20:34:56
先来讲一下什么是BSP
20:35:18
其实51寄存器也就一点点
20:35:29
对应当今的ARM级芯片
20:35:34
真的是九牛一毛
20:35:44
新的芯片结构复杂
20:35:57
并且在寄存器设置上更是不同
20:36:14
所以很难被人们一一去使用和了解
20:36:27
这样很不利于推广和开发
20:36:31
故
20:36:36
有了新的开发模式
20:36:53
自AVR起有了自动生成代码器后
20:36:57
逐渐的
20:37:09
演变出了官方
20:37:13
为使用者
20:37:23
开发一套完整的固件函数库
20:37:30
给人们方便
20:37:40
的去使用和了解芯片
20:37:58
其实我们需要知道的一点是
20:38:09
固件库肯定为了兼容
20:38:14
而写的很繁琐
20:38:26
因为他要适用不同的芯片
20:38:09
固件库肯定为了兼容
20:38:14
而写的很繁琐
20:38:26
因为他要适用不同的芯片
20:38:34
可以说是一整个系列
20:38:47
除了繁琐之外
20:38:51
还有一点
20:39:01
为何称为固件
20:39:12
固即根本
20:39:25
其实固件库操作的是驱动层
20:39:39
而开发者仅需开发应用层
20:39:53
也就是寄生在固件库上去开发
20:40:01
那么我们知道了一点
20:40:05
这点是什么?
20:40:13
就是固件库本身如果一旦使用
20:40:16
这些程序
20:40:22
是不必去改动它的
20:40:29
即固定
20:40:45
仅需加入有关的头文件与c文件
20:40:49
调用即可
20:40:59
以GPIO为例
20:41:17
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-26387.png
20:41:24
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-21282.png
20:43:03
GPIO
20:43:09
通用输入输出
20:43:32
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-1681.png
20:43:38
以这个函数为例
20:43:50
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-1956.png
20:43:58
原型
20:44:05
即是函数的声明
20:44:21
我们可以看到函数中有两个需要输入的参数
20:44:35
port以及一个32bit的数据
20:44:43
继续看下去
20:45:03
他的描述是set一位
20:45:17
注意bit byte的关系
20:45:29
指定输出一位
20:45:35
值为高
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-27579.png
20:46:18
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-7475.png
20:46:27
好了知道了函数功能
20:47:16
知道了函数的功能
20:47:29
我们需要知道输入的参量是干什么的
20:47:38
那么我们接着看下面
20:47:44
参数:
20:47:58
参数
port [in]
指定GPIO 端口. 可以是 GPA, GPB , GPC , GPD , GPE
i32Bit [in]
指定GPIO端口的比特. 可以是 0~15.
20:48:05
port是干嘛的呢
20:48:10
指定GPIO端口
20:48:30
可以选择的参数是GPA, GPB , GPC , GPD , GPE
20:48:48
依照不同的芯片与自己的外设可以自行选择
20:49:05
一组port我们知道是16个IO
20:49:08
那么
20:49:14
第二个参数
20:49:18
说的是什么呢
20:49:21
看下面
20:49:27
i32Bit [in]
指定GPIO端口的比特. 可以是 0~15.
20:49:31
0-15
20:49:43
即第一个口,第二个口。。。。。
20:49:47
以此类推
20:50:13
最后我们需要看一下如果我们要使用这一函数
20:50:24
我们需要引入什么头文件
20:50:40
可以看到是Driver/DrvGPIO.h
20:50:57
Driver/是他的路径
20:51:01
不必理会
20:51:07
之后会说到的
20:51:19
至于返回值
E_SUCCESS 成功.
E_DRVGPIO_ARGUMENT 参数错误.
20:51:43
这个看情况而定,若你要检测是否完成预定
20:51:48
可以加以判断
20:52:16
若不需要则可没有返回到的参数
20:52:30
这是中文的驱动参考
20:52:41
接下来请打开英文的驱动参考
20:52:47
同样是这个函数
20:52:52
多了些东西
20:53:45
可以看到
20:53:42
20:54:11
多了很重要的5.3. Type Definition
20:54:41
这是对于应用到的参数的定义说明
20:54:47
中文手册中式没有的
20:55:16
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-29830.png
20:55:26
同样是SET函数
20:55:35
注意英文手册多了什么?
20:55:40
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-23692.png
20:55:49
如果你很懒
20:55:59
可以直接复制这些例子
20:56:10
黏贴到你的程序中再改
20:56:27
/* Configure GPA-0 as GPIO output mode*/
DrvGPIO_Open (E_GPA, 0, E_IO_OUTPUT);
/* Set GPA-0 to 1(high) */
DrvGPIO_SetBit (E_GPA, 0);
20:56:34
就像我上面那样
20:56:44
这就是BSP了
20:56:57
他让我们不需要看懂寄存器
20:57:06
仅仅需要他的手册和例子
20:57:17
就可以去使用新唐大部分的功能
20:57:42
这种开发方式与以前死板的去各个击破每个环节有着天壤之别
20:57:55
到现在有没有问题
20:58:00
---------------------------------------------------------提问部分------------------------------------------------
简单总结一下主要这几个问题:以下的对话中可以找到答案。
1. 中英版本中文、英文函数操作,端口名字不一样?
2. 想问下,一个GPIO位要多长时间才能置1。
3. GPIO OPEN函数有Bug ?
4. GPIO中 常用的 几个函数?
5. 第四个问题:想问下,一个GPIO位要多长时间才能置1。
-nu20110220(109812091) 20:58:26
晕死,中文的手册怎么没有例子呢
nu20110220(109812091) 20:58:40
还是看英文的,好在英文也可以
笨孩子(570298585) 20:58:46
中文的手册有新版的吧
能发(38158183) 20:58:46
中文、英文函数操作,端口名字不一样
知秋(1359482228) 20:58:57
哪里不一样
能发(38158183) 20:59:00
中文的是不是不对啊
能发(38158183) 20:59:10
GPA E_GPA
关于GPIO的那么多库函数 常用到的也就四五个吧?
xiaoqiu111(554672917) 20:59:21
中文的也有例子
jutyy(360600219) 20:59:30
想问下,一个GPIO位要多长时间才能置1。
能发(38158183) 20:59:32
而且现在这个函数需要三个参数了吧
20:59:43
哈哈
笨孩子(570298585) 20:59:42
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-1769.png
I2S_CON_T
jutyy(360600219) 20:59:54
由0变为1?
20:59:55
我的版本可能老了
君子竹(350747003) 21:00:02
__T是啥意思?
nu20110220(109812091) 21:00:04
51实际上也可以这样啊!
雁塔菜农<hotwc3@qq.com> 21:00:16
上课最好少提问,下课再提
21:00:28
不用我缓缓。。。
21:00:33
我手指抽筋了的。。。
focus012(99046948) 21:00:36
GPIO OPEN函数有Bug
额
21:01:01
一个个来啊
俺要花了
雁塔菜农<hotwc3@qq.com> 21:01:15
眼花了
21:01:19
说中文手册中有例子的
21:01:23
请截图
21:01:27
并告知版本
柳江蔗农(418430863) 21:01:30
库开发很快上手,我一般是看看.H头文件的相关函数,一般由函数名看出函数功能,然后查找参数类型定义(结构体,共同体,枚举)
21:02:12
说有的给我站出来截图!
笨孩子(570298585) 21:02:33
晕 谁说有了??
nu20110220(109812091) 21:02:29
那位找到新的了?英文和中文的?告诉地址
笨孩子(570298585) 21:02:50
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-6966.png
21:02:55
若是愚人节玩笑请声明,否则直接咔嚓
笨孩子(570298585) 21:02:59
找到了啊
21:03:09
没人么?
21:03:21
这个问题看来只能跳过
xiaoqiu111(554672917) 21:03:39
用手机上的 ,驱动函数有事例
DrvGPIO_Open DrvGPIO_Close DrvGPIO_SetBit DrvGPIO_ClrBit DrvGPIO_SetPortBits
GPIO中 常用的 除了这几个 还有?
21:03:46
好吧
21:03:54
到时候笔记上截图
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-13333.png
21:03:58
等下
21:04:26
稍后会送上菜农香吻一个
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-30806.png
21:04:45
第二个问题
DrvGPIO_Open DrvGPIO_Close DrvGPIO_SetBit DrvGPIO_ClrBit DrvGPIO_SetPortBits
GPIO中 常用的 除了这几个 还有哪几个常用?
21:05:02
E_GPA
21:05:15
可能是我版本不一样的关系吧
开中断。
21:05:19
有些出入
确实,现在不能直接用GPA了
21:05:57
好
21:05:59
第三个问题
21:06:19
常用到的也就四五个吧
21:06:21
是啊
DrvGPIO_EnableEINT0 9G说的是这个吧
21:06:25
就四五个
21:06:34
具体看你常用哪四五个
君子竹(350747003) 21:06:37
讲讲NUC1xx.h吧
21:06:46
可能和别人的四五个不一样
21:06:53
file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-3690.png
21:07:28
第四个问题:想问下,一个GPIO位要多长时间才能置1。
这个要看电气特性手册
21:08:00
第五个问题GPIO OPEN函数有Bug
21:08:21
这玩意我不知道,请在课下联系file:///C:/Users/KIN_E4~1/AppData/Local/Temp/ksohtml/wps_clip_image-13653.png |