打印
[菜农群课笔记]

今晚菜地夜场《ARM不是单片机,手机就像战斗机!》

[复制链接]
6227|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2010-12-16 17:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
来自 2楼
tear086| | 2010-12-16 20:01 | 只看该作者
本帖最后由 tear086 于 2010-12-16 22:52 编辑

20:03:27
先问什么是《单片机》?

。。。

20:22:24
所谓“单片机”要追述到遥远的80年代初期

20:22:54
当时Z80横行中国大地

一叶擒王(106821270)  20:23:03
单板机?

20:23:14
TP801

20:23:24
北工大

20:23:40
PIO,CTC

一叶擒王(106821270)  20:23:46
北方工业大学?

20:23:52


20:24:22
PIO就是现在的GPIO,CTC就是TIMER

20:24:43
还有SIO就是UART

20:25:15
即Z80+PIO+CTC+SIO横行霸道

20:25:34
每个都是40管脚的巨无霸

一叶擒王(106821270)  20:25:59
都是外挂存储吧

20:26:04


20:27:17
当8031出现后,单片机迎来了最长的寿星

20:29:04
8031的成功就在于他的外部总线,P0口的数据和地址的复用。

20:30:37
再看多少豪杰,有谁还有“准双向IO”?

20:32:13
当俺又看到芯唐有此功能后,首先敬礼!!!

20:33:01
因为看到它,俺选用了它

20:33:14
它太精明了

20:34:36
虽然真双向IO也可伪造成准双向IO,但一般人不明白为什么输出输入用方向控制
最成功的就是它经典永恒的“准双向IO”

20:35:00
俺在网上此问题答复的很多

20:35:42
张明峰的书也特别强调了这点

20:36:21
他主要不太上网,否则肯定被俺色诱成功

20:37:38
一根线在一点时间如何双向?

20:38:16
真双向主要是大电流驱动

20:38:31
同时只能一个方向

一叶擒王(106821270)  20:39:03
开漏加上拉啊?

20:39:14
内部就是两线了,而且你输出低能接收吗?

20:39:26


20:39:41
这不是今天的话题

Mr.Wrong(44500789)  20:41:14


20:41:56
先忆苦和思甜,手机如今就像战斗机!

Mr.Wrong(44500789)  20:42:17
在开漏模式下,带上拉,确实可以基本实现准双向功能,只是读写寄存器不一样。

20:44:10
旧社会时(单片机)浪费是最大的犯罪!
新社会了(ARM,DSP,CPLD.FPGA)节约是最大的犯罪~~~

20:46:33
所谓的嵌入式领域俗称“电工”,至今还在追求“代码的效率”,“汇编和C”
“C与C++"之间的口水,说实话,档次太低~~~

20:47:38
有些电工连上位机软件都不会,整日守着”超级终端“,”串口助手“~~~

20:48:27
整日追求汇编和C,什么时候才能脱贫???

20:49:35
俺不指特定人群~~~

20:50:12
俺51岁多了,还如此的菜鸟,实在惭愧~~~

20:51:20
当我们进入新时代(至少M0),就应该抛弃旧社会的想法!

20:52:24
俺在网上只要编译器支持C++,俺绝不用C

20:52:47
还行~~

20:58:18
休会

21:26:19
C有什么优点,C++有什么好处?

21:27:20
说实话,有很多用VC的不会C++

21:28:00
只是用了框架

李冬发(632653918)  21:28:43
C++,虚函数不错

21:28:52
哈哈~~~俺做的充电器AVR的T26都用C++(2K)

John Lee<j.y.lee@yeah.net>  21:29:11
模板(template)也不错

21:29:37
在这里俺比老师差远了~~~

21:30:22
https://bbs.21ic.com/icview-35239-1-1.html

21:30:47
俺没色诱俺的老师~~~

21:32:13
哈哈~~~看来C++有救了~~~老师不在,俺到处被拍砖~~~

李冬发(632653918)  21:32:31
为什么有救没救的

21:32:50
你是没人拍砖~~~

李冬发(632653918)  21:33:14
我有安全帽

李冬发(632653918)  21:33:19
不怕砖

21:34:05
”."引领世界新潮流~~~

21:34:21
所以红杏推荐”."

21:35:09
-> 只能在C/C++看到了~~~

21:36:46
刚上传的过程包实际不想特别推荐C++,而是准备用C  PK C++

21:37:34
这两天俺就搞个C PK C++的工程来

21:38:08
自己玩无趣,要大家一起玩才是~~~

21:38:25
这样就可以PK冬发了~~~

李冬发(632653918)  21:38:44
我C/C++都用啊

李冬发(632653918)  21:39:09
C#实在用不来。

21:39:32
晕!期待什么,包里面已经藏匿了其精华----COM接口技术

21:40:12
https://bbs.21ic.com/icview-210620-1-1.html

21:40:31
老师请指教~~~

21:40:39
俺抽烟去

21:44:01
COM接口技术就是今晚的“战斗机”!!!

21:44:32
菜农将其编译,用于加密程序之用途

21:44:38
变异

李冬发(632653918)  21:44:46
COM?PC端的?

21:45:03


21:45:36
俺将它老人家色诱来为电工们服务!!!

21:46:37
谁讲讲COM接口的来历和出处

21:47:24
https://bbs.21ic.com/icview-190954-1-1.html

21:49:49
COM接口技术是微软为了制止动态链接库DLL的级数速度的增长提出的

21:51:05
首先是为防止DLL的**,其次才是控平台即控件的无关性等

21:51:38
单片机也存在此问题

21:52:29
例如C语言庞大的函数阵列,归类很晕~~~

21:54:49
在保持C语言函数库现状下,用COM接口技术将其封装,就伪装成了“山寨的C++”,而且更为凶猛~~~

21:56:16
菜农的红杏就有一半它的影子。
保内comIRQ就是它最最至高的精华所在

21:59:15
当今软件的潮流就是事件驱动,实质就是回调函数

22:01:20
俺拿一手,抽代旱烟!

22:04:43
托一按钮,双击,填入代码。
运行,点击按钮,程序自动运行。
这就是回调

22:05:03
任何PC程序都是如此

22:05:30
回调即系统调用也

22:06:25
在单片机中,定时器中断后,会怎样?

22:06:44
回调就是,用户写一个让系统能执行的代码,以实现你的特别用意。

22:07:43
电工都是自己填入中断函数中,因为他们害怕浪费几个时钟周期

22:08:48


22:09:58
这样加装了回调函数指针后,有好处和坏处

22:10:16
坏处就是电工穷

22:10:29
好处太多

22:12:25
当用户没安装即申请回调函数时,即使中断也是什么都不执行

22:13:43
当安装了回调函数,就会执行用户程序。
而且可以卸载或换一个程序,很灵活

22:14:31
利大于弊,在M0上,原厂的库函数都是用回调函数的

22:15:27
但太烂,没几种管理,像菜农的comIRQ几种管理一样

22:16:02
真是没真的悟出回调的真谛,实在是倒塌了

22:17:52
俺没这个本事,但头文件有俺的缩影,所以俺这次红杏轻松许多。
故俺没彻底抛弃它,和它并存互不干扰,而且是俺绑架(绑定)了它

22:18:40
有基础实在是晕,如GPIO的PMD

22:18:52
俺只能将就了

22:19:12
晕否??????????

22:22:44
COM接口接口技术在单片机的应用很少

22:23:02
代理全部回家迷糊吧~~~

22:23:20
俺今天早课,没半夜**叫

22:23:56
俺没讲?

22:24:07
这才对

22:24:26
#include "main.h"

#ifndef __NUC1xxcomIRQ_H__
#define __NUC1xxcomIRQ_H__

#ifdef __cplusplus
extern "C" {
#endif

typedef void (*CALLBACK)(void);//通用回调函数指针
typedef void (*BOD_CALLBACK)(void);//0 DrvSYS.C已使用
typedef void (*WDT_CALLBACK)(void);//1
typedef void (*EINT0_CALLBACK)(void);//2
typedef void (*EINT1_CALLBACK)(void);//3
typedef void (*GPAB_CALLBACK)(void);//4
typedef void (*GPCDE_CALLBACK)(void);//5
typedef void (*PWMA_CALLBACK)(void);//6
typedef void (*PWMB_CALLBACK)(void);//7
typedef void (*TMR0_CALLBACK)(void);//8
typedef void (*TMR1_CALLBACK)(void);//9
typedef void (*TMR2_CALLBACK)(void);//10
typedef void (*TMR3_CALLBACK)(void);//11
typedef void (*UART02_CALLBACK)(void);//12
typedef void (*UART1_CALLBACK)(void);//13
typedef void (*SPI0_CALLBACK)(void);//14
typedef void (*SPI1_CALLBACK)(void);//15
typedef void (*SPI2_CALLBACK)(void);//16
typedef void (*SPI3_CALLBACK)(void);//17
typedef void (*I2C0_CALLBACK)(void);//18
typedef void (*I2C1_CALLBACK)(void);//19
typedef void (*CAN0_CALLBACK)(void);//20
typedef void (*CAN1_CALLBACK)(void);//21
typedef void (*SD_CALLBACK)(void);//22
typedef void (*USBD_CALLBACK)(void);//23
typedef void (*PS2_CALLBACK)(void);//24
typedef void (*ACMP_CALLBACK)(void);//25
typedef void (*PDMA_CALLBACK)(void);//26
typedef void (*I2S_CALLBACK)(void);//27
typedef void (*PWRWU_CALLBACK)(void);//28  DrvSYS.C已使用
typedef void (*ADC_CALLBACK)(void);//29
typedef void (*DAC_CALLBACK)(void);//30
typedef void (*RTC_CALLBACK)(void);//31

#define interface struct
typedef interface IComIRQ_Interface IComIRQ_Interface;//接口定义

typedef struct IComIRQ_Vtbl//回调函数指针或回调函数数组结构
{
        union{
                CALLBACK FnArray[32];//回调函数数组
                struct{//回调函数指针结构
                        void (*BOD_IRQCallbackPtr)(void);//0 DrvSYS.C已使用
                        void (*WDT_IRQCallbackPtr)(void);//1
                        void (*EINT0_IRQCallbackPtr)(void);//2
                        void (*EINT1_IRQCallbackPtr)(void);//3
                        void (*GPAB_IRQCallbackPtr)(void);//4
                        void (*GPCDE_IRQCallbackPtr)(void);//5
                        void (*PWMA_IRQCallbackPtr)(void);//6
                        void (*PWMB_IRQCallbackPtr)(void);//7
                        void (*TMR0_IRQCallbackPtr)(void);//8
                        void (*TMR1_IRQCallbackPtr)(void);//9
                        void (*TMR2_IRQCallbackPtr)(void);//10
                        void (*TMR3_IRQCallbackPtr)(void);//11
                        void (*UART02_IRQCallbackPtr)(void);//12 注意Uart0和Uart1公有一个回调函数
                        void (*UART1_IRQCallbackPtr)(void);//13
                        void (*SPI0_IRQCallbackPtr)(void);//14
                        void (*SPI1_IRQCallbackPtr)(void);//15
                        void (*SPI2_IRQCallbackPtr)(void);//16
                        void (*SPI3_IRQCallbackPtr)(void);//17
                        void (*I2C0_IRQCallbackPtr)(void);//18
                        void (*I2C1_IRQCallbackPtr)(void);//19
                        void (*CAN0_IRQCallbackPtr)(void);//20
                        void (*CAN1_IRQCallbackPtr)(void);//21
                        void (*SD_IRQCallbackPtr)(void);//22
                        void (*USBD_IRQCallbackPtr)(void);//23
                        void (*PS2_IRQCallbackPtr)(void);//24
                        void (*ACMP_IRQCallbackPtr)(void);//25
                        void (*PDMA_IRQCallbackPtr)(void);//26
                        void (*I2S_IRQCallbackPtr)(void);//27
                        void (*PWRWU_IRQCallbackPtr)(void);//28  DrvSYS.C已使用
                        void (*ADC_IRQCallbackPtr)(void);//29
                        void (*DAC_IRQCallbackPtr)(void);//30
                        void (*RTC_IRQCallbackPtr)(void);//31
                }FnPtr;//回调函数指针
        };
}IComIRQ_Vtbl, *pIComIRQ_Vtbl;//回调函数指针或回调函数数组结构

interface IComIRQ_Interface//回调函数COM接口
{
    IComIRQ_Vtbl Callback;//回调函数指针或回调函数数组结构
        volatile int Count;//已成功安装的回调函数的个数
};

extern IComIRQ_Interface IComIRQ;//回调函数COM接口全局变量
extern bool comIRQ_InstallCallbackFn(unsigned int IRQn, CALLBACK pFn);//安装回调函数
extern bool comIRQ_UnInstallCallbackFn(unsigned int IRQn);//卸载已安装的回调函数

#ifdef __cplusplus
}
#endif

#endif//__NUC1xxcomIRQ_H__

FAN(307451030)  22:24:34
村长,有机会把你讲的整理下,我们好拜读

22:25:04
哈哈~~~村民潜水?

22:25:49
COM接口技术实际就是两个结构体

22:27:20
第一个结构内的一个成员指向第二个结构的首地址
第二个结构体内成员是清一色的C语言函数指针

这就是COM接口技术的精华


22:27:46
明白否?

22:28:06
在comIRQ.h中

22:28:19
interface IComIRQ_Interface//回调函数COM接口
{
    IComIRQ_Vtbl Callback;//回调函数指针或回调函数数组结构
        volatile int Count;//已成功安装的回调函数的个数
};

22:29:59
结构ComIRQ_Interface
成员有2个,(也可以一个)

22:30:19
interface IComIRQ_Interface//回调函数COM接口
{
    IComIRQ_Vtbl Callback;//回调函数指针或回调函数数组结构
        volatile int Count;//已成功安装的回调函数的个数
};

22:30:50
Callback是指向IComIRQ_Vtbl的指针

22:31:36
为何用2个不用一个结构???

22:32:24
一会就明白了它的真谛了

typedef struct IComIRQ_Vtbl//回调函数指针或回调函数数组结构
{
        union{
                CALLBACK FnArray[32];//回调函数数组
                struct{//回调函数指针结构
                        void (*BOD_IRQCallbackPtr)(void);//0 DrvSYS.C已使用
                        void (*WDT_IRQCallbackPtr)(void);//1
                        void (*EINT0_IRQCallbackPtr)(void);//2
                        void (*EINT1_IRQCallbackPtr)(void);//3
                        void (*GPAB_IRQCallbackPtr)(void);//4
                        void (*GPCDE_IRQCallbackPtr)(void);//5
                        void (*PWMA_IRQCallbackPtr)(void);//6
                        void (*PWMB_IRQCallbackPtr)(void);//7
                        void (*TMR0_IRQCallbackPtr)(void);//8
                        void (*TMR1_IRQCallbackPtr)(void);//9
                        void (*TMR2_IRQCallbackPtr)(void);//10
                        void (*TMR3_IRQCallbackPtr)(void);//11
                        void (*UART02_IRQCallbackPtr)(void);//12 注意Uart0和Uart1公有一个回调函数
                        void (*UART1_IRQCallbackPtr)(void);//13
                        void (*SPI0_IRQCallbackPtr)(void);//14
                        void (*SPI1_IRQCallbackPtr)(void);//15
                        void (*SPI2_IRQCallbackPtr)(void);//16
                        void (*SPI3_IRQCallbackPtr)(void);//17
                        void (*I2C0_IRQCallbackPtr)(void);//18
                        void (*I2C1_IRQCallbackPtr)(void);//19
                        void (*CAN0_IRQCallbackPtr)(void);//20
                        void (*CAN1_IRQCallbackPtr)(void);//21
                        void (*SD_IRQCallbackPtr)(void);//22
                        void (*USBD_IRQCallbackPtr)(void);//23
                        void (*PS2_IRQCallbackPtr)(void);//24
                        void (*ACMP_IRQCallbackPtr)(void);//25
                        void (*PDMA_IRQCallbackPtr)(void);//26
                        void (*I2S_IRQCallbackPtr)(void);//27
                        void (*PWRWU_IRQCallbackPtr)(void);//28  DrvSYS.C已使用
                        void (*ADC_IRQCallbackPtr)(void);//29
                        void (*DAC_IRQCallbackPtr)(void);//30
                        void (*RTC_IRQCallbackPtr)(void);//31
                }FnPtr;//回调函数指针
        };
}IComIRQ_Vtbl, *pIComIRQ_Vtbl;//回调函数指针或回调函数数组结构

22:35:37
第2个结构体内存放了M0的全部32个回调函数

22:36:46
哈哈~~~断掉它将会如何???------------------加密

一叶擒王(106821270)  22:37:00
加密?

22:37:09


22:37:56
假若你的系统没了任何中断会将如何?

22:38:32
        union{
                CALLBACK FnArray[32];//回调函数数组
                struct{//回调函数指针结构
                        void (*BOD_IRQCallbackPtr)(void);//0 DrvSYS.C已使用
                        void (*WDT_IRQCallbackPtr)(void);//1
      
22:39:58
这是菜农将COM接口变异了
FnArray是数组,入口是中断序号,假若密码解不开了,程序将飞往何方???

22:40:46
呵呵,手机中的战斗机

22:42:22
这就是俺在论坛了的加密理念

22:42:39
论坛纠结,无法沟通~~~

22:43:48
这就是菜农COM接口应用的一部分,虽少但精华所在

22:44:26
http://www.hotpower.org/HotAjax/HotPower_HotAjax.html

22:44:48
加上俺的HotWC3(厕所密码3)

22:45:46
这是菜农的三个自主知识产权构成的密码体系

22:47:35
就到这里?

22:48:17
关键是可气芯唐的没UID

22:49:32
告诫大家,不用用CRC加密,俺100%**~~~~

22:50:23
变异就不一样了~~~

22:51:10
http://blog.secdoctor.com/html/75/475.html

使用特权

评论回复
板凳
tear086| | 2010-12-16 20:02 | 只看该作者
本帖最后由 tear086 于 2010-12-16 22:55 编辑

22:52:15
散会,明天将什么???

22:52:52
手机不是战斗机(换大屏幕)?

22:53:38
哈哈~~~今天菜农心情好,早收工了

使用特权

评论回复
地板
lp1468| | 2010-12-16 20:02 | 只看该作者
学习中

使用特权

评论回复
5
hotpower|  楼主 | 2010-12-17 00:38 | 只看该作者
晕,差点讲如何**CRC通讯协议

使用特权

评论回复
6
hpxlove| | 2010-12-18 14:48 | 只看该作者
讲了就好了、

使用特权

评论回复
7
baidudz| | 2010-12-18 18:36 | 只看该作者
估计讲了我也很难听懂

使用特权

评论回复
8
hotpower|  楼主 | 2010-12-19 08:30 | 只看该作者
有个网友给俺邮件要**协议,俺的第六感一次**成功

使用特权

评论回复
9
dfsa| | 2010-12-19 21:55 | 只看该作者
这标题很有气魄

使用特权

评论回复
10
秋天落叶| | 2010-12-20 20:57 | 只看该作者
这**协议时黑客干的活吧:lol

使用特权

评论回复
11
hotpower|  楼主 | 2010-12-26 18:41 | 只看该作者
农会发放棉裤以资鼓励

使用特权

评论回复
12
txcy| | 2010-12-26 22:16 | 只看该作者
战斗机进城了:lol

使用特权

评论回复
13
wu0232| | 2010-12-27 11:35 | 只看该作者
是北京工业大学

不是北方工业大学,差一个档次。

使用特权

评论回复
14
hotpower|  楼主 | 2010-12-27 15:17 | 只看该作者
那是群友说的。
是北工大的tp801单板机,俺好像家里还有台新的(没用过)

使用特权

评论回复
15
hq_y| | 2010-12-27 16:16 | 只看该作者
新的?看看有没有人收,当文物

使用特权

评论回复
16
zyok| | 2010-12-28 11:34 | 只看该作者
学习:lol

使用特权

评论回复
17
zjp816923| | 2010-12-28 12:45 | 只看该作者
怎么加群

使用特权

评论回复
18
hotpower|  楼主 | 2010-12-28 14:30 | 只看该作者
QQ群号:12047788

使用特权

评论回复
19
mcu_david| | 2010-12-29 10:09 | 只看该作者
学习中

使用特权

评论回复
20
zaianda| | 2011-1-3 13:30 | 只看该作者
MARK

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1538

主题

21697

帖子

505

粉丝