Time of Update: 2018-12-04
今天又看了一下ucos保護臨界段代碼,ucos是利用禁止中斷來保護臨界段的。ucos給我們提供了三種方法:一:直接關中斷和直接開中斷。即成對使用,保證臨界段的安全。二:先把原來的中斷狀態壓入棧中,然後再關閉中斷。恢複時直接從棧中返回原來儲存的中斷狀態。三:先儲存原來的中斷狀態到一個變數中,然後再關閉中斷。 三種情況我都說完了,下面我說一下為什麼有這三種形態:其實,這三種方法從應用上可分為兩種,可嵌套和不可嵌套。其實大家分析一下,所謂保護臨界段代碼就是關中斷,在作業系統內部本身就是關中斷、然後
Time of Update: 2018-12-04
幾個步驟完成在SMT32的串口上使用printf函數1.#include <stdio.h>2.添加三個小函數void uart_put(u8 dat){ while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET); USART_SendData(USART1,dat);}int fputc(int ch, FILE
Time of Update: 2018-12-04
困擾了我N就的串口問題終於在昨天下午解決了,那叫一個開心啊,哈哈。開心之餘又有點沮喪,應為東拼西湊下來的程式,雖然跑通了,但是還有一些地方看不明白,算了,還是先記錄下來,慢慢研究。 閑話少說,直接上代碼吧,希望能幫到看到它的朋友,也希望您看了以後,能指點一二。 一、時鐘定義: void RCC_Configuration(void){ ErrorStatus HSEStartUpStatus; //將外設RCC寄存器重設為預設值 RCC_DeInit();
Time of Update: 2018-12-04
VC中的Sleep函數在延時應用中很好用,比如通訊程式中,一方需等待另一方若干個毫秒後再處理,或者在死迴圈中,讓出CPU不至於資源佔用100%等等;但是,在介面操作中不要使用Sleep函數,比如按鈕事件中,不要調用這個函數,否則會出現意外的情況!!那麼如何處理延時一段時間執行呢?使用定時器,將按鈕事件中調用Sleep函數中的地方,改為啟動一個一段時間執行後的定時器:SetTimer(定時器編號,毫秒數後執行,NULL);執行的動作放到定時器回呼函數中執行,如果僅執行一次的,那麼進到回呼函數後首先
Time of Update: 2018-12-04
1、static (1)先來介紹它的第一條也是最重要的一條:隱藏。 當我們同時編譯多個檔案時,所有未加static首碼的全域變數和函數都具有全域可見度。為理解這句話,我舉例來說明。我們要同時編譯兩個源檔案,一個是a.c,另一個是main.c。下面是a.c的內容char a = 'A'; // global variablevoid msg() { printf("Hello/n"); } 下面是main.c的內容int main(void){ extern char a;
Time of Update: 2018-12-04
1. http://bbs.csdn.net/topics/390368164金山介面庫是基於DirectUI技術的介面庫,和BCG、Xtreme Toolki等介面庫差別還是比較大的,BCG、Xtreme Toolki都是基於MFC擴充的介面庫,所有控制項都是基於Windows視窗的,DirectUI則是通過自繪、貼圖的方式來實現的各種控制項,一般都是通過XML設定檔來進行介面的描述,修改資源和設定檔可以方便的改變介面的風格,並且可以做出來更好看的介面,現在流行的用戶端應用都是基於Direct
Time of Update: 2018-12-04
任務是作業系統處理的首要對象,在多任務啟動並執行環境中,任務的管理需要考慮多方面的因素,最基本的任務管理是任務的建立。任務建立函數有兩種,一種是基本的建立函數OSTaskCreate,另一種是擴充的任務建立函數OSTaskCreateExt。兩個函數都實現了任務的建立,但是OSTaskCreateExt的功能更強,帶有很多附加的功能,如果不需要附加功能,OSTaskCreate是完全可以勝任的,沒有哪一個更好之說,完全根據需要來選擇。
Time of Update: 2018-12-04
/**************************************************************************** * * 名稱: RCC_Configuration * * 描述: 設定系統時鐘 * * 返回: 無 * ****************************************************************************/ void RCC_Configuration(void)
Time of Update: 2018-12-04
在ucos-II中,為了實現任務之間的同步,用到的同步機制有:訊號量,郵箱和訊息佇列。其中這裡我主要說下對訊號量的使用經驗。訊號量在建立時,調用OSSemCreate(INT16U cnt)函數。cnt為訊號量的初始值。對cnt賦予不同的值,所起到的作用不同。如果Semp = OSSemCreate(0), 該訊號量表示等待一個事件或者多個事件的發生。 例如:我們現在想實現這樣一個功能:當有按鍵按下時,PWM蜂鳴器響起;無按鍵時,蜂鳴器不響。這是我們就可以分別建立兩個任務,Task1和Task2
Time of Update: 2018-12-04
使用OPENGL顯示中文的類//GLfont.cpp: implementation of the GLfont class.////////////////////////////////////////////////////////////////////////#include "GLfont.h"#include "gl/gl.h"////////////////////////////////////////////////////////////////////////
Time of Update: 2018-12-04
最近這幾天一直在忙在STM32的USART實驗,雖然網上有很多的執行個體,自己也曾完全按照書的常式一個字不少的輸入電腦中,但在實際編程中總是出現太多的錯誤。最終利用模擬發現最終的錯誤,僅僅是多了一個函數,為了這一個函數,我調試了整整兩天。呵呵,最終還是做出來啦以下是實驗程式:/* Includes ------------------------------------------------------------------*/#include
Time of Update: 2018-12-04
stm32標準外設庫是stm32全系列晶片的外設驅動,有了它可以大大加速我們開發stm32。 首先從st公司的網站下載最新的stm32標準外設庫,寫本文時最新的版本是V3.5.0。 解壓該zip檔案,得到如下檔案夾和檔案STM32F10x_StdPeriph_Lib_V3.5.0\ _htmresc Libraries Project Utilities Release_Notes.html stm32f10x_stdperiph_lib_um.chm
Time of Update: 2018-12-04
http://blog.csdn.net/zhanglianpin 今天又看了一下ucos保護臨界段代碼,ucos是利用禁止中斷來保護臨界段的。ucos給我們提供了三種方法:一:直接關中斷和直接開中斷。即成對使用,保證臨界段的安全。二:先把原來的中斷狀態壓入棧中,然後再關閉中斷。恢複時直接從棧中返回原來儲存的中斷狀態。三:先儲存原來的中斷狀態到一個變數中,然後再關閉中斷。 三種情況我都說完了,下面我說一下為什麼有這三種形態:其實,這三種方法從應用上可分為兩種,可嵌套和不可嵌套。其實大家分析一下,
Time of Update: 2018-12-04
http://tiandongying.blog.163.com/blog/static/1636128212010101833611564/1,實驗一#include "includes.h"void main(void){ OSInit(); 關LED; OSStart();}void OSTaskIdleHook(void){ if(LED is ON){ 關LED; }else{ 開LED;
Time of Update: 2018-12-04
這樣的一個問題:介面上一組(一堆)靜態控制項,比如類比控制器上許多按鈕,當某個訊號來時,一些設定為紅色(故障),當另一個訊號來時,一些設定為綠色(正常),使用了CLabel類,在http://www.codeproject.com/KB/static/clabel.aspx上下載,因為它可以直觀設定【背景色】。因為是“一組按鈕”(不是一個),程式應該用迴圈的方式來遍曆“每一個按鈕”,而不是直接去直觀的“按鈕2設定顏色、按鈕2設定顏色,。。。。按鈕N設定顏色”。第一次我選用了迴圈遍曆控制項ID下標
Time of Update: 2018-12-04
① 捕獲【Ctrl、Ctrl+Alt】和【Ctrl+Alt+Shift】這樣的按鍵組合:BOOL CTestDlg::PreTranslateMessage(MSG* pMsg){if(pMsg->message==WM_KEYDOWN){BOOL bCtrl=::GetKeyState(VK_CONTROL)&0x8000;BOOL bShift=::GetKeyState(VK_SHIFT)&0x8000;BOOL bAlt=::GetKeyState(VK_MENU)
Time of Update: 2018-12-04
SLD匯入錯誤提示翻譯:Bill zhong(cudng@msn.com)日期:2007-08-16譯文用作學術交流,版歸原著所有. 現象: 您會在Component Database Manager匯入一個新的SLD檔案時得到一個錯誤.提示:不能在目標檔案刪除貯藏的檔案.請確保你能寫這些檔案許可權.解決途徑:Component Database Manager將刪除任何先前版本,再以副本形式更新檔案.在/Windows Embedded Data
Time of Update: 2018-12-04
一、stm32的pwm輸出引腳是使用的IO口的複用功能。二、T2~T5這4個通用定時器均可輸出4路PWM——CH1~CH4。三、我們以tim3的CH1路pwm輸出為例來進行圖文講解(其它類似),並在最後給出tim3的ch1和ch2兩路pwm輸出的c代碼(已在STM32F103RBT6上測試成功,大家放心使用!)。四、給出了PWM頻率和占空比的計算公式。步驟如下:1、使能TIM3時鐘RCC->APB1ENR |= 1 << 1;2、配置對應引腳(PA6)的複用輸出功能GPIOA-
Time of Update: 2018-12-04
最簡單的JNI JNI就是“Java本地化”,適用於和C/C++混合編程,複雜的理論不必多說,下面一個例子說明了怎樣JNI。以下工作都在一個開發目錄下,假設環境變數都已經設好。 1. 編寫類似這樣的java檔案,儲存為 HelloWorld.java 的檔案,並javac HelloWorld 產生class檔案 class HelloWorld { public
Time of Update: 2018-12-04
三個介面函數,設定某一行的文字顏色(前景色彩)和背景色,使用說明都放在注釋裡了,自己看吧:LineColorListCtrl.h#if !defined(AFX_LINECOLORLISTCTRL_H__92EB1CD4_CD33_4E02_A098_367A8FEFF38E__INCLUDED_)#define AFX_LINECOLORLISTCTRL_H__92EB1CD4_CD33_4E02_A098_367A8FEFF38E__INCLUDED_#if _MSC_VER > 10