单片机开发,MCU开发网,电子设计
做最优秀的电子开发团队
做最优秀的电子开发团队
十二 1st
臺資黑工廠里寫的,字體為繁體,我也懶的轉換了,反正看的人也不多..
個人理解信號量的作用:任務之間同步的標識,或是對共享資源操作的一個鎖匙(MS有更強大的互斥型的信號量).總之不管那么多,一個任務可以等待一個信號量.任務或是中斷可以發送信號量,等待信號量的任務在收到信號量的時候就繼續運行.可以多個任務同時等待一個信號量,但只有優先級最高的任務得到信號量并執行.中斷不可使用信號量. 簡單的信號量應用 一:先在OS_CFG.H中把OS_SEM打頭的幾個全部定義為1;OS_MAX_EVENTS為所有的事件數量(包括消息隊列等),定義為多少看情況,我設定為20(每加一個就多用掉了近100字節的RAM). 二:定義一個OS_EVENT弄的指針 方法: OS_EVENT *SBSB; 三:在任務中創建一個信號量 方法: SBSB=OSSemCreate(5); 這樣SBSB就是一個指向了新建的一個信號量.后面那個5表示初始值,表示現在有5個信號量
四:接下來就可以在任務中使用信號量了(中斷中只可以發送信號量) 等待信號量方法:OSSemPend(SBSB,0,&ERROR); //等待SBSB這個信號量 后面的一個參數為超時,0表示永不超時,時間單位為OS的TIMESTICK,第三個參數為錯誤代碼 發送信號量方法:很簡單 OSSemPost(SBSB);就收工了
下面是我寫的最簡單應用,STM32用的,放到這里,以免以后忘了.
#include “stm32f10x_lib.h” #include “includes.h”
OS_STK os_sysinit_stk[60]; OS_STK os_ledshow_stk[60]; OS_STK os_ideluser_stk[60];
void os_sysinit_task(void *pdata) { INT8U ERROR; sysinit(); initGPIOA(); while(1) { OSSemPend(SEM01,0,&ERROR); OSTimeDly(40); GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET); OSTimeDly(20); GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET); } }
void os_ledshow_task(void *pdata) { while(1) 更多 >
十一 28th
老板現在不在,抽空寫一篇文章:STM32的初學者可以看看,老鳥請自覺飄過-_-!.
由于公司為台灣黑工廠,所以所有電腦都是繁體系統,所以所有文字也為繁體的,不過應該不影響閱讀.
剛購入STM32時,對它的資料看的有點頭痛,不過在整理了一下之后就大至清析明了,特別是它的固件庫使用風格比較另類,使用了大量的結構體,然后用整個結構作為固件庫函數的參數,這樣雖然可以減少函數參數的傳遞,但對于習慣了NPX與TI的固件庫來說這樣有點不習慣.
廢話這么多,現在就上我的STM32第一個程式,點亮一個LED! 須要注意的是須要使用固件庫.
GPIO_InitTypeDef GPIOASET; //定義一個GPIO_InitTypeDef類型的結構 GPIO_DeInit(GPIOA); //GPIOA恢復默認值 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //先使能GPIO A的時鐘 (幾乎所有的CORTEX-M3核的外設都須要先使能時鐘) GPIOASET.GPIO_Pin=(GPIO_Pin_0|GPIO_Pin_1); /*選擇到GPIO_PIN 0還有1 */ GPIOASET.GPIO_Speed=GPIO_Speed_50MHz; //GPIO的速度 GPIOASET.GPIO_Mode=GPIO_Mode_Out_PP; /* 輸入輸出類型:當然是輸出型的 */ GPIO_Init(GPIOA,&GPIOASET); //然后設置GPIO,它是根據GPIOASET中各個成員的值來進行設定的
接下來我們就可以直接使用GPIO了,如果為了效率可以使用匯編或是直接寫寄存器的方法操作,如果無所謂效率就使用固件庫;
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET); //置位相應的LED
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET); //清零相應的LED 這很容易理解.
十一 28th
任务管理 1 OSTaskCreate() 建立一个新任务。任务的建立可以在多任务环境启动之前,也可以在正在运行的任务中建立。中断处理程序中不能建立任务。一个任务可以为无限循环的结构。 函数原型:INT8U OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio); 参数说明:task 是指向任务代码首地址的指针。 pdata 指向一个数据结构,该结构用来在建立任务时向任务传递参数。 ptos is a pointer to the task’s top of stack. If the configuration constant OS_STK_GROWTH is set to 1, the stack is assumed to grow downward (i.e. from high memory 更多 >
十一 20th
之前用了快三年的S1在几次自由落体运动后,终于用是不是死机来表示抗义了.现在又刚上班,很多事情须要用手机,没办法只好出血买手机了.
根据多年的用机经历,山塞机可能已不太适我了,所以只好买智能手机,当初锁定在多普达与NOKIA之间,由于之前在使用WM操作系统的手机都会有死机,睡死,闹钟变哑等现像(特别是闹钟变哑最让人抓狂).所以NOKIA我关注了很久,看中了NOKIA 5800,但那价格对于失业多年的我来说一直是个痛.
前几天去买手机配件的地方,原本是要再买个S1的外壳,让我的老S1复活的,哪知道看到那老板居然放了两个黑莓手机在柜台上.早就知道那个美国第一个黑人老大也是用的黑莓手机,之前也好像听说黑莓手机是最稳定安全的智能手机.所以就叫老板拿出来看了看.卖糕的!居然还是全新的(根据我的砖业鉴定)…..型号是8300,价格是一千…在我印像中8300好像也是黑莓很新的一款,所以马上就心动了.在小测试了一下,最终以950元的价格买了下来,另外再加了50元,又买了一个原电(当时那老板有两个黑莓,他就把另一个上面的给了我).总共花了1K.马上回家慢慢研究去了.
首先装上我以前S1上面用的8G的卡,开机,结果提示存储卡不能识别,须要格式化.没关系,取下来先把里面的资料保存到电脑后然后再格式化,放回手机.还是不能识别^o^!,…上网GG之,发现有人说最新版的OS是4.5版的改进了SD的支持,我现在是4.2版的,所以我打算刷机,经高人指点说刷机无风险.不过还是针扎了一下才决定刷机(我手上还有个HCT568的刷机砖头),下载到最新的OS后开始刷.黑莓刷机比HCT等WM系统的刷机真不是高一个级别,刷完后以前的软件居然都还在,不过刷机时间可不是一般的长…
刷完机后,看了版本,的确刷到了传说的4.5版了.迫不急待地装入tf卡.结果任提示无法识别…我差点没吐血.最后终于使用手机自带的格式化媒体卡后搞定问题.满以为黑莓为了安全什么什么的,对卡使用了什么加密或是新的文件系统来加密格式化,把卡取下后用读卡器接入电脑,结果是只是在卡里创建了几个文件夹……….现在来装软件,我最常用的比如来电归属显示以及GBA模拟器,在论坛学习了一整晚上后,内心的不安终于得到证实:黑莓手机的系统相当地不开放,比NOKIA的SB系统都还要保守,我根本没有办法安装一个像WM系统中的来电精灵及短信大师那样的软件…你也不可以将程序装在卡中,只能放到机身内存中(太浪费我8G的卡了)..最要命的是我找不到一个好的中文输入法,只有个点讯输入法,但由于系统不开放,并不能完全集成到短信中去,现在只好在点讯的记事本中写好后再复制到短信界面中去,系统自代的双拼又用不习惯.唉…..
现在来总结一下不满意黑莓的地方:
一:系统太不开放了,有点不像智能手机,只比MOTO的LINUX手机好那么一丁点,第三方软件不丰富,没什么API与系统权限也做不丰富.
二:全键盘容易按错键(很多人说这样做不错,这是我个人还没有用习惯的原因).
三:反应速度MS不太好,(特别是在播放视频的时候,短信之类的反应比NOKIA还有WM的都快)8300好像还是300+的CPU
四:正在感受中,待补充..
现在来说说他的优点与HCT的WM系统来相比一下,NOKIA的手机我只用了不到一个月那个手机就给小偷XX了(我的1500大洋啊),所以我不发表太多言论
一:待机时间 无论是NOKIA还是HTC,只能给黑莓提鞋,特别是HTC的,那些都是电老虎.
二:外放音质不错 NOKIA我用的是5320XM音乐手机,都比现在的8300差那么一丁点(印象中是如此),HCT的S1+完全不能比,不过用耳机就不一样了,WM系统的软件在多媒体功能上那可不是盖的…用耳机的话HTC的应该是最好的(须要第三方软件).当然所有的机器外放都与山塞机没得比……
三:关机闹钟 WM的机器五年内别想有这功能
四:稳定性 NOKIA的机器我也没用多久,不发表什么…WM:我对微软出品的东西的稳定性从来不抱任何幻想,为什么我会买黑莓手机,WM手机的稳定性是最主要的原因.黑莓手机到现在用了五天左右,未死机或睡死,闹钟目前没有哑过…
现在就写这么多.想到以后再加.
十一 8th
游走于网络,一不小心看到这文章,结合自已的遭遇,深有感触,特转过来.
来源:世界经理人 我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉得特别想对那些初学JAVA/DOT。NET技术的朋友说点心里话,希望你们能从我们的体会中,多少受点启发(也许我说的不好,你不赞同但看在我真心的份上别扔砖头啊).
一、 在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇,你千万更不要认为哪些从事 市场开发,跑腿的人,没有前途。
不知道你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,在软件上线和开发的关键阶段需要团队的成员没日没夜的加班,还需要为测试出的BUG和不能按时提交的软件模块功能而心怀忐忑,有的时候如果你不幸加入现场开发的团队你则需要背井离乡告别你的女友,进行封闭开发,你平时除了编码之外就是吃饭和睡觉(有钱的公司甚至请个保姆为你做饭,以让你节省出更多的时间来投入到工作中,让你一直在那种累了就休息,不累就立即工作的状态)
更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人,你的朋友圈子小且单一,甚至破坏你原有的爱情(想象一下,你在外地做现场开发2个月以上,却从没跟女友见过一面的话,你的女友是不是会对你呲牙裂嘴)。
也许你拿到了所谓的白领的工资,但你却从此失去享受生活的自由,如果你想做技术人员尤其是开发人员,我想你很快就会理解,你多么想在一个地方长期待一段时间,认识一些朋友,多一些生活时间的愿望。
比之于我们的生活和人际关系及工作,那些从事售前和市场开发的朋友,却有比我们多的多的工作之外的时间,甚至他们工作的时间有的时候是和生活的时间是可以兼顾的,他们可以通过市场开发,认识各个行业的人士,可以认识各种各样的朋友,他们比我们坦率说更有发财和发展的机会,只要他们跟我们一样勤奋。(有一种勤奋的普通人,如果给他换个地方,他马上会成为一个勤奋且出众的人。)
二、在学习技术的时候千万不要认为如果做到技术最强,就可以成为100%受尊重的人。
有一次一个人在面试项目经理的时候说了这么一段话:我只用最听话的人,按照我的要求做只要是听话就要,如果不听话不管他技术再好也不要。随后这个人得到了试用机会,如果没意外的话,他一定会是下一个项目经理的继任者。
朋友们你知道吗?不管你技术有多强,你也不可能自由的腾出时间象别人那样研究一下Linux源码,甚至写一个Linux样的杰作来表现你的才能。你需要做的就是按照要求写代码,写代码的含义就是都规定好,你按照规定写,你很快就会发现你昨天写的代码,跟今天写的代码有很多类似,等你写过一段时间的代码,你将领略:复制,拷贝,粘贴那样的技术对你来说是何等重要。(如果你没有做过1年以上的真正意义上的开发不要反驳我)。
如果你幸运的能够听到市场人员的谈话,或是领导们的谈话,你会隐约觉得他们都在把技术人员当作编码的机器来看,你的价值并没有你想象的那么重要。而在你所在的团队内部,你可能正在为一个技术问题的讨论再跟同事搞内耗,因为他不服你,你也不服他,你们都认为自己的对,其实你们两个都对,而争论的目的就是为了在关键场合证明一下自己比对方技术好,比对方强。(在一个项目开发中,没有人愿意长期听别人的,总想换个位置领导别人。)
三、你更不要认为,如果我技术够好,我就自己创业,自己有创业的资本,因为自己是搞技术的。
如果你那样认为,真的是大错特错了,你可以做个调查在非技术人群中,没有几个人知道C#与JAVA的,更谈不上来欣赏你的技术是好还是不好。一句话,技术仅仅是一个工具,善于运用这个工具为别人干活的人,却往往不太擅长用这个工具来为自己创业,因为这是两个概念,训练的技能也是完全不同的。 创业最开始的时候,你的人际关系,你处理人际关系的能力,你对社会潜规则的认识,还有你明白不明白别人的心,你会不会说让人喜欢的话,还有你对自己所提供的服务的策划和推销等等,也许有一万,一百万个值得我们重视的问题,但你会发现技术却很少有可能包含在这一万或一百万之内,如果你创业到了一个快成功的阶段,你会这样告诉自己:我干吗要亲自做技术,我聘一个人不就行了,这时候你才真正会理解技术的作用,和你以前做技术人员的作用。
[小结]
基于上面的讨论,我奉劝那些学习技术的朋友,千万不要拿科举考试样的心态去学习技术,对技术的学习几近的痴迷,想掌握所有所有的技术,以让自己成为技术领域的权威和专家,以在必要的时候或是心里不畅快的时候到网上对着菜鸟说自己是前辈。
技术仅仅是一个工具,是你在人生一个阶段生存的工具,你可以一辈子喜欢他,但最好不要一辈子靠它生存。
掌握技术的唯一目的就是拿它找工作(如果你不想把技术当作你第二生命的话),就是干活。所以你在学习的时候千万不要去做那些所谓的技术习题或是研究那些帽泡算法,最大数算法了,什么叫干活?
就是做一个东西让别人用,别人用了,可以提高他们的工作效率,想象吧,你做1万道技术习题有什么用?只会让人觉得酸腐,还是在学习的时候,多培养些自己务实的态度吧,比如研究一下当地市场目前有哪些软件公司用人,自己离他们的要求到底有多远,自己具体应该怎么做才可以达到他们的要求。等你分析完这些,你就会发现,找工作成功,技术的贡献率其实并没有你原来想象的那么高。
不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国不会出现BILL GATES,因为,中国目前还不是十分的尊重技术人才,还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。(如果你不理解,一种可能是你目前仅仅从事过技术工作,你的朋友圈子里技术类的朋友占了大多数,一种可能是你还没有工作,但喜欢读比尔。盖茨的传记)。