中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

定制型網(wǎng)站制作明細(xì)報(bào)價(jià)表百度應(yīng)用中心

定制型網(wǎng)站制作明細(xì)報(bào)價(jià)表,百度應(yīng)用中心,做網(wǎng)站模板用什么框架,成都網(wǎng)站推廣一、寫在前面 關(guān)于源碼的下載,以及在KEIL工程里面添加操作系統(tǒng)的源代碼,這里就不再贅述了。需要注意的是RT-thread默認(rèn)里面是會(huì)使用串口的,因此需要額外的進(jìn)行串口的初始化,有些人可能會(huì)問,為什么不直接使用CubMAX直接…

一、寫在前面

關(guān)于源碼的下載,以及在KEIL工程里面添加操作系統(tǒng)的源代碼,這里就不再贅述了。需要注意的是RT-thread默認(rèn)里面是會(huì)使用串口的,因此需要額外的進(jìn)行串口的初始化,有些人可能會(huì)問,為什么不直接使用CubMAX直接進(jìn)行系統(tǒng)的移植,經(jīng)過我的嘗試發(fā)現(xiàn),這個(gè)玩意移植的RT-thread會(huì)有一些小的bug,比如直接生成的代碼FinSH工作不正常,修改方法和第七節(jié)一樣。雖然整個(gè)系統(tǒng)的調(diào)度啥的都是正常的。因此我決定另辟蹊徑,其他的功能使用CubMAX進(jìn)行設(shè)置,因?yàn)樗?jiǎn)直太方便了,然后RT-thread的移植采用手動(dòng)的方法進(jìn)行。

二、移植前的準(zhǔn)備工作

因?yàn)镽T-thread的源碼里面有這些中斷處理函數(shù)的實(shí)現(xiàn),因此需要將上面的這些都關(guān)閉掉,不然編譯會(huì)出現(xiàn)重復(fù)定義的錯(cuò)誤。

?我這里使用的是串口1,因此先完成他的相關(guān)設(shè)置。

三、將RT-thread的源碼添加到工程里面

都添加進(jìn)行以后,然后不要忘了設(shè)置頭文件的包含路徑。

四、進(jìn)行第一次的編譯

?會(huì)發(fā)現(xiàn)錯(cuò)誤很多,不慌。透過查看錯(cuò)誤發(fā)現(xiàn)是因?yàn)関a_list沒有定義引起的,我們知道va_list是定義在stdarg.h里面的,然后通過觀察頭文件的包含發(fā)現(xiàn),這個(gè)頭文件在下面這個(gè)文件里面定義著,顯然是因?yàn)镽T_USING_LIBC這個(gè)宏,沒有打開導(dǎo)致的。在rtconfig.h里面添加這個(gè)宏定義即可。

?五、進(jìn)行第二次編譯

我們發(fā)現(xiàn)編譯很成功,沒有錯(cuò)誤也沒有警告,這時(shí)你可能已經(jīng)覺得成功了,我只能說我當(dāng)時(shí)也是這么想的,結(jié)果發(fā)現(xiàn)程序運(yùn)行那是,相當(dāng)?shù)牟徽!P枰鉀Q這個(gè)問題我們得知道RT-thread啟動(dòng)的流程,其實(shí)你只需要知道他在運(yùn)行我們的main函數(shù)之前,會(huì)運(yùn)行一段自己的代碼,

?然后我們進(jìn)入這個(gè)函數(shù)發(fā)現(xiàn),這里是關(guān)于系統(tǒng)的初始化,有很多。

?接下來我們進(jìn)入第一個(gè)初始化函數(shù)里面。將串口的初始化放在這里,注意需要包含相關(guān)的頭文件。有了串口我們就可以使用printf函數(shù)來進(jìn)行調(diào)試了。

?當(dāng)我們進(jìn)入到第二個(gè)初始化函數(shù)里面我們發(fā)現(xiàn),這里有一些輸出,但是要想使用這些輸出我們需要實(shí)現(xiàn)void rt_hw_console_output(const char *str)這個(gè)函數(shù),在board.c里面其實(shí)已經(jīng)有關(guān)于這個(gè)函數(shù)的實(shí)現(xiàn),他是用RT_USING_CONSOLE這個(gè)宏來進(jìn)行控制的,因此需要在trconfig.h里面打開這個(gè)宏

?你會(huì)發(fā)現(xiàn)串口里面還是沒有我們想要的輸出,通過觀察發(fā)現(xiàn)雖然我們自己將串口進(jìn)行了初始化,但是系統(tǒng)這里使用的是串口2,因此需要將他改成你初始化的那個(gè)串口,我這里改成串口1。

?到這里我們的串口就能正常工作了。下面這個(gè)是串口的輸出。

?到這里如果你創(chuàng)建一個(gè)任務(wù),然后你會(huì)神奇的發(fā)現(xiàn)這個(gè)任務(wù)好像并沒有執(zhí)行,也就是說我們的系統(tǒng)并沒有完全初始化成功。因?yàn)樵赗T-thread里面創(chuàng)建任務(wù)的時(shí)候有兩種分配內(nèi)存的方式,第一種就是靜態(tài)分配,第二種就是動(dòng)態(tài)分配。RT-thread默認(rèn)使用的是動(dòng)態(tài)分配,我想會(huì)不會(huì)是這里的問題,我就將關(guān)于動(dòng)態(tài)分配的相關(guān)配置注釋掉了。到這里整個(gè)系統(tǒng)就算是初始化完畢,也正常運(yùn)行起來了。需要注意的是我們這里所有的內(nèi)存分配都是靜態(tài)的,因此創(chuàng)建變量的時(shí)候一定要分配它的大小,不然會(huì)有很奇怪的問題。

?六、使用靜態(tài)方式創(chuàng)建任務(wù)

static struct rt_thread led1_thread;
/* 線程主體函數(shù) */
static void led1_thread_entry(void* parameter);
/* 定義線程棧 */
static rt_uint8_t rt_led1_thread_stack[1024];static struct rt_thread led0_thread;
/* 線程主體函數(shù) */
static void led0_thread_entry(void* parameter);
/* 定義線程棧 */
static rt_uint8_t rt_led0_thread_stack[1024];int main(void)
{MX_GPIO_Init();/* USER CODE BEGIN 2 */rt_thread_init(&led1_thread,                 /* 線程控制塊 */"led1",                       /* 線程名字 */led1_thread_entry,            /* 線程入口函數(shù) */RT_NULL,                      /* 線程入口函數(shù)參數(shù) */&rt_led1_thread_stack[0],     /* 線程棧起始地址 */sizeof(rt_led1_thread_stack), /* 線程棧大小 */3,                            /* 線程的優(yōu)先級(jí) */20);                          /* 線程時(shí)間片 */rt_thread_init(&led0_thread,                 /* 線程控制塊 */"led0",                       /* 線程名字 */led0_thread_entry,            /* 線程入口函數(shù) */RT_NULL,                      /* 線程入口函數(shù)參數(shù) */&rt_led0_thread_stack[0],     /* 線程棧起始地址 */sizeof(rt_led0_thread_stack), /* 線程棧大小 */4,                            /* 線程的優(yōu)先級(jí) */20);                          /* 線程時(shí)間片 */rt_thread_startup(&led1_thread);rt_thread_startup(&led0_thread);  while (1){}}//LED1線程
static void led1_thread_entry(void* parameter)
{	while(1){LED1 = 0;rt_thread_delay(200);   /* 延時(shí)200個(gè)tick */rt_kprintf("led1_thread running,LED1_ON\r\n");LED1 = 1;     rt_thread_delay(500);   /* 延時(shí)500個(gè)tick */rt_kprintf("led1_thread running,LED1_OFF\r\n");}
}static void led0_thread_entry(void* parameter)
{	while(1){LED0 = 0;rt_thread_delay(200);   /* 延時(shí)200個(gè)tick */rt_kprintf("led0_thread running,LED0_ON\r\n");LED0 = 1;     rt_thread_delay(500);   /* 延時(shí)500個(gè)tick */rt_kprintf("led0_thread running,LED0_OFF\r\n");}
}

七、實(shí)現(xiàn)FinSH

?

?這個(gè)頭文件你可以通過CubMAX來生成,也可以在項(xiàng)目例程里面復(fù)制一個(gè)。然后運(yùn)行有可能你的會(huì)運(yùn)行成功,有可能并不會(huì)成功。失敗的界面是這樣的;

成功的界面是這樣的

如果失敗了,嘗試調(diào)整下圖的參數(shù)即可。

http://www.risenshineclean.com/news/46917.html

相關(guān)文章:

  • 東坑網(wǎng)頁(yè)設(shè)計(jì)seo技巧
  • 做外貿(mào)要自己建網(wǎng)站嗎網(wǎng)頁(yè)免費(fèi)制作網(wǎng)站
  • 桂林賣手機(jī)網(wǎng)站seo網(wǎng)站優(yōu)化快速排名軟件
  • 市場(chǎng)營(yíng)銷的八個(gè)理論seo系統(tǒng)培訓(xùn)課程
  • 做外貿(mào)對(duì)學(xué)歷要求高嗎seo經(jīng)典案例分析
  • 南京本地網(wǎng)站建設(shè)視頻專用客戶端app
  • wordpress 圖片鏈接下載成都seo整站
  • 國(guó)內(nèi)外做gif的網(wǎng)站網(wǎng)絡(luò)營(yíng)銷推廣的方式
  • 湘潭學(xué)校網(wǎng)站建設(shè) 磐石網(wǎng)絡(luò)專注整合營(yíng)銷傳播成功案例
  • 徐州方案公示在哪個(gè)網(wǎng)站西地那非片吃了多久會(huì)硬起來
  • 松江做營(yíng)銷網(wǎng)站開封網(wǎng)絡(luò)推廣哪家好
  • 中文域名注冊(cè)報(bào)價(jià)表網(wǎng)站優(yōu)化怎么操作
  • 網(wǎng)站建設(shè)優(yōu)化推廣教程今日新聞大事件
  • 海外產(chǎn)品網(wǎng)站建設(shè)上海網(wǎng)絡(luò)推廣聯(lián)盟
  • 做外貿(mào)網(wǎng)站要多少錢國(guó)外免費(fèi)網(wǎng)站服務(wù)器
  • 官方網(wǎng)站內(nèi)容更新需要怎么做建站之星
  • 人民南路建設(shè)廳網(wǎng)站咨詢電話營(yíng)銷網(wǎng)站的宣傳、推廣與運(yùn)作
  • 淘寶客為什么做網(wǎng)站東莞疫情最新情況
  • 哪個(gè)網(wǎng)站做視頻有錢掙長(zhǎng)春網(wǎng)站提升排名
  • 中國(guó)國(guó)際貿(mào)易網(wǎng)站公眾號(hào)如何推廣運(yùn)營(yíng)
  • 網(wǎng)站開發(fā)概述網(wǎng)站的優(yōu)化策略方案
  • 旅游電子商務(wù)網(wǎng)站設(shè)計(jì)我的百度購(gòu)物訂單
  • 蘇州公司建設(shè)網(wǎng)站制作網(wǎng)站seo優(yōu)化方案設(shè)計(jì)
  • PHP套模板做網(wǎng)站他達(dá)拉非什么是
  • wordpress怎么做站內(nèi)站搜索引擎名詞解釋
  • 溫州閥門外貿(mào)網(wǎng)站建設(shè)百度站長(zhǎng)平臺(tái)app
  • dz論壇可以做招聘網(wǎng)站百度文章收錄查詢
  • 上海市工程建設(shè)信息網(wǎng)官方網(wǎng)站廣東seo價(jià)格是多少錢
  • 攝影網(wǎng)站網(wǎng)址大全愛站網(wǎng)查詢
  • 免費(fèi)做團(tuán)購(gòu)網(wǎng)站的軟件好三臺(tái)網(wǎng)站seo