2427|1

183

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

[GD32L233C] + 3.使用RTThread [复制链接]

本帖最后由 chrisrh 于 2022-1-25 15:36 编辑

GD32L233C\GD32L23x_Demo_Suites_V1.1.0\GD32L233C_START_Demo_Suites\Projects\01_GPIO_Running_LED

打开GD32L233C  demo  中  LED  的例程

 

在右侧找到RTT,然后Install RTT,等待安装完成;

 

点击绿砖打开

 

 勾选RTT的kernel使用

 

 

完成RTT内核的添加;

 

 

打开RTOS中board.c,做如下处理:

将 rt_os_tick_callback(void) 替换为 SysTick_Handler(void)

 

   

屏蔽#error "TODO 1: OS Tick Configuration."

 

 

打开"gd32l23x_it.c",屏蔽如下函数

void HardFault_Handler(void)

void PendSV_Handler(void)

void SysTick_Handler(void)

 

内核和时钟处理完毕,在 main中进行相关配置,添加rtt的头文件

添加gd32l233c_start的头文件,里面有宏定义好的LED_ IO和位操作运算

 

动态分配内存,创建多线程:

婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘﹢寮婚敐澶婄闁挎繂妫Λ鍕⒑閸濆嫷鍎庣紒鑸靛哺瀵鈽夊Ο閿嬵潔濠殿喗顨呴悧濠囧极妤e啯鈷戦柛娑橈功閹冲啰绱掔紒姗堣€跨€殿喖顭烽弫鎰緞婵犲嫷鍚呴梻浣瑰缁诲倸螞椤撶倣娑㈠礋椤栨稈鎷洪梺鍛婄箓鐎氱兘宕曟惔锝囩<闁兼悂娼ч崫铏光偓娈垮枦椤曆囧煡婢跺á鐔兼煥鐎e灚缍屽┑鐘愁問閸犳銆冮崨瀛樺亱濠电姴娲ら弸浣肝旈敐鍛殲闁抽攱鍨块弻娑樷槈濮楀牆濮涢梺鐟板暱閸熸壆妲愰幒鏃傜<婵鐗愰埀顒冩硶閳ь剚顔栭崰鏍€﹂悜钘夋瀬闁归偊鍘肩欢鐐测攽閻樻彃顏撮柛姘嚇濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐姝岀亱濡炪倖鎸鹃崐锝呪槈閵忕姷顦板銈嗙墬缁嬪牓骞忓ú顏呪拺闁告稑锕︾粻鎾绘倵濮樺崬鍘寸€规洘娲橀幆鏃堟晲閸モ晪绱查梻浣稿悑閹倸岣胯瀹曨偊鎼归崗澶婁壕婵炲牆鐏濋弸锔姐亜閺囧棗娲ら悡鈥愁熆鐠哄ソ锟犳偄閸忚偐鍙嗛柣搴到閻忔氨绱炵仦瑙f斀闁绘ɑ鍓氶崯蹇涙煕閻樻剚娈滈柕鍡楀暣瀹曘劎鈧稒锚娴滆鲸绻濋悽闈浶㈡繛灞傚€濆鍛婃媴閼叉繃妫冮弫鎰板川椤撶喐顔夐梻浣瑰▕閺€閬嶅垂閸ф钃熸繛鎴炃氬Σ鍫熸叏濡も偓閻楀棙鎱ㄥ☉銏♀拺闁荤喐婢橀弳閬嶆煕閻旂ǹ顥嬫俊鍙夊姍楠炴帡寮崒婊愮床婵犵妲呴崹浼村箹椤愶讣缍栭柟鐑樺灍閺€浠嬫煟濮楀棗浜滃ù婊呭亾缁绘盯骞橀弶鎴犲姲闂佺ǹ顑嗛幐濠氬箞閵婏妇绡€闁告侗鍣禒鈺冪磽娓氬洤鏋熼柣鐔濆洤绠查柛鏇ㄥ灠鎯熼悷婊勭矒瀹曨剟宕奸弴鐔叉嫽婵炶揪绲介幉锟犲疮閻愮儤鐓犵憸鐗堝笧閻g儤銇勯姀锛勫⒌鐎规洖鐖奸崺锟犲磼閵堝棛绋愰梻鍌欒兌缁垶宕濋弴銏犵妞ゆ劑鍊楁稉宥夋煥濠靛棭妲归柣鎾卞劦閺岋繝宕橀妸銉㈠亾閻熸壋鏋嶉柡鍥ュ灪閻撴洘鎱ㄥ璇蹭壕婵炲瓨绮忓▔娑綖韫囨拋娲敂閸滀焦顥堟繝鐢靛仦閻n亪宕濆畝鈧槐鐐寸節閸屾粍娈鹃梺鍝勬储閸ㄦ椽鎮為懖鈹惧亾楠炲灝鍔氶柟铏姍瀹曟繈鏁冮埀顒勨€旈崘顔嘉ч柛鈩冾殔濞兼垿姊虹粙娆惧剱闁规瓕宕甸幑銏犫槈濮橆偆鍓ㄩ梺鍝勭Р閸婃洘绂嶆ィ鍐╃厵濡鑳堕ˇ锔界箾閸稑濡界紒缁樼箞閹粙妫冨ù璁圭悼閻ヮ亪寮剁捄銊愌呪偓娈垮枟閻擄繝鐛幘璇茬婵犻潧鐗嗛弫鎼佹⒑閼姐倕鞋婵炲拑绲挎禍鎼佸Ω閳轰胶顦梺缁樻⒐閹埖绂嶅⿰鍫熺厸闁告劧绲芥禍楣冩煟閵忊晛鐏茬紒缁樼箞閻涱噣宕橀妸搴㈡瀹曟﹢鍩℃担鍦偓顓㈡⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐埗鍝勬喘婵$兘濡烽姀鈩冩澑闂備胶绮崝妯间焊濞嗗骏鑰块柟缁㈠枟閻撴洖鈹戦悩鎻掓殶缂佺姵鎹囬弻锝夋晲閸パ冨箣濡炪們鍨哄ú鐔煎春濞戞﹩娼╂い鎾跺枂娴犮垹顪冮妶鍐ㄧ仾婵☆偄鍟悾鐑藉Ω閳哄﹥鏅滈梺鍛婁緱閸欏孩瀵奸弽顓熲拻闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勭嵁婢舵劖鏅柛鏇ㄥ墮鎼村﹪姊虹粙鎸庢拱濠㈣娲熷畷鎴﹀箻閹颁焦鍍甸梺鍛婎殘閸嬫盯鐛€n喗鍊甸悷娆忓缁€鍐╃箾閼碱剙鏋涢柣娑卞櫍瀹曞爼顢楁担闀愮綍闂備礁澹婇崑渚€宕硅ぐ鎺斿祦婵°倓鑳剁弧鈧悗鍏稿嵆閺€鍗烆熆濮椻偓閸┾偓妞ゆ帊鐒︾亸鍨箾閸℃劕鐏查柛銊╃畺瀵剟濡烽敂鍙ョ按濠电姵顔栭崰妤呭Φ濞戙垹纾婚柟鍓х帛閻撴稓鈧厜鍋撻柍褜鍓熷畷浼村冀椤撶喎浠掑銈嗘磵閸嬫挾鈧娲栫紞濠囥€佸▎鎾崇煑闁靛绠戞禍婵嬫⒒閸屾艾鈧绮堟笟鈧幃鍧楀炊椤剚鐩畷鐔碱敍閳ь剟宕堕鈧崹鍌涖亜閹板墎鍒扮€殿喖娼″娲焻閻愯尪瀚板褎鎸抽弻鈥崇暆鐎n剙鍩岄柧浼欑稻缁绘盯鎳犳0婵嗘闂佸搫鎳樻禍璺侯潖濞差亜宸濆┑鐘叉噹椤ユ繈姊虹涵鍛彧闁挎碍銇勯銏㈢缂佽鲸甯掕灒閻犲洤妯婇埀顒佹崌濮婃椽骞嗚缁犳娊鏌熼搹顐e暗缂侇噮鍙冮弫鎾绘偐閺傘儲瀚奸梻浣告啞缁嬫垿鏁冮妷鈺佺厱闁归偊鍘剧粻楣冩煠绾板崬澧柡瀣洴閺屾洟宕遍弴鐙€妲銈庡亝缁诲啴鏁嶉幇顑芥斀闁搞儯鍔嶉悵婵嬫⒒閸屾瑨鍏岀紒顕呭灦瀹曟繆绠涘☉妯兼煣濠电姴锕ら悧濠囧磹鐠烘亽鈧帒顫濋敐鍛婵犳鍠栭敃銉ヮ渻閽樺)娑㈠礃閵娿垺顫嶅┑顔斤供閸擄箓寮抽锝勭箚闁绘劦浜滈埀顑懐纾芥慨妯挎硾绾偓闂佽鍎煎Λ鍕及閵夛妇绠鹃柟瀛樼懃閻忊晝绱掗悪鍛М闁哄矉缍侀獮鍥敊閼恒儲鐦庢俊鐐€栧鐟懊洪悢濂夋綎婵炲樊浜濋崑鍌炲箹鐎涙ḿ鈽夊ù鐙€鍠栭—鍐Χ閸愩劉鍋撻弴銏犵9闁割煈鍠氶弳锕傛⒒閸喓鈻撻柡瀣叄閺岀喖寮剁捄銊ょ驳濡炪倖姊瑰Λ鍐潖閾忓湱纾兼俊顖氭惈椤秹姊虹拠鈥崇仩闁兼椿鍨堕崺銏ゅ箻閺傘儱鐗氶梺鍓插亞閸犳捇宕㈤幖浣瑰€甸柛蹇擃槸娴滈箖姊洪柅鐐茶嫰婢у鈧娲戦崡鍐差嚕娴犲鏁囬柣鎰暩閺嗩偊姊绘担铏瑰笡闁搞劌鍚嬮幈銊╁Χ婢跺﹦锛涢柣搴秵閸犳鎮¢弴鐔翠簻闁规澘澧庨幃鑲╃磼閻樺磭澧甸柡宀嬬秬缁犳盯骞樼拠鎻掑強闂備礁鎼惌澶屽緤妤e啫绠氶柡鍐ㄧ墕椤懘鏌嶆潪鎵妽婵炲懏鐩缁樻媴閸涘﹥鍠愭繝娈垮枤閺佸骞冭閹晝鎷犻懠顑跨礈闂備焦瀵уú鏍磹瑜版帒纾瑰┑鐘崇閻撱垺淇婇娆掝劅婵″弶妞介弻锝夋晲閸℃ǜ浠㈠┑顔硷攻濡炶棄螞閸愩劉妲堟慨妯夸含閺変粙姊绘担鍛靛綊鏁冮妷鈺傚亱闁绘ǹ宕靛畵渚€鏌涢埄鍐姇闁稿﹦鍏橀弻锝夊箣閻愩劎绱伴梺鍛婏耿娴滆泛顫忓ú顏勭閹兼番鍩勫鍨渻閵堝棙鑲犻柛鎰劤濞堛劑鏌i悩鍏呰埅闁告柨娴锋竟鏇熺附缁嬭法楠囬梺鍓插亝缁嬫垶淇婇崸妤佺厱婵炲棗鑻禍鎯р攽閻樻剚鍟忛柛鐘崇墵閺佸啴鏁傞幆褍鐏婂銈嗙墬缁海绮婚弮鍫熺厽闁哄啫鍊哥敮鍫曟煟閹烘垹浠涢柕鍥у楠炴帡宕卞鎯ь棜闁诲骸鍘滈崑鎾绘煥濠靛棛澧曢柛鏂跨仛閵囧嫰鏁傞懞銉ュ攭闂佸搫鐬奸崰鏍偘椤曗偓瀹曞綊顢欓崣銉х濠德板€楁慨鐑藉磻閻愬灚鏆滈柨鐔哄Х瀹撲焦鎱ㄥ璇蹭壕閻庢鍠栭悥濂哥嵁鐎n亖鏀介柛娑卞灣椤︿即姊婚崒姘偓鎼佸磹閻戣姤鍊块柨鏇炲€归崕鎴犳喐閻楀牆绗掗柛銊ュ€婚幉鎼佹偋閸繄鐟ㄧ紓浣哄Х閸犳牠寮婚妸鈺傚亜闁告繂瀚呴姀銏㈡/闁诡垎鍛ㄩ梺鍝勬湰閻╊垶銆侀弴銏℃櫜闁糕剝鐟Σ浼存⒒娴h櫣甯涢柟姝岊嚙鐓ゆ慨妞诲亾濠碉紕鏁诲畷鐔碱敍濮樿京鏉告俊鐐€栭弻銊╁Φ濞嗘挸顫呴柕鍫濇閸橀亶姊洪崫鍕殜闁稿鎸剧槐鎺楊敊閼恒儱纾抽悗娈垮枦椤曆囶敇閸忕厧绶為悗锝庡墮瀵娊姊虹拠鎻掑毐缂傚秴妫欑粋宥夋倷閺夋埈鍤ら悗鍏夊亾闁告洦鍏橀幏娲⒑閸涘﹦绠撻悗姘煎幖閿曘垽骞嶉鍓э紲闁诲函缍嗛崑鍕倶閹绢喗鐓曢柍鍝勫暙娴犺鲸顨ラ悙宸剶闁轰礁鍟撮崺鈧い鎺戝瀹撲線鏌曡箛濞惧亾閼碱剛鐣鹃梻渚€娼ч悧鍡涘箯閹存繍娼栨俊銈呮噺閻撴瑦銇勯弴鐐搭棤缂佸顕ц彁闁搞儜宥堝惈闂佽鍠楅悷鈺呫€侀弮鍫濈闁靛ǹ鍎版竟鏇㈡⒑閸濆嫭宸濆┑顕€娼ч悾鐑藉蓟閵夛妇鍘卞銈嗗姉婵挳宕濆杈╂/闁诡垎鍕淮闂佸搫鐭夌紞浣规叏閳ь剟鏌嶉幆鐗堢【缂傚秴锕獮蹇涘箣閿旇棄浜滈梺鍛婄缚閸庢娊顢欓弴銏♀拺闁荤喖鍋婇崵鐔兼煕鐎n剙鏋涙鐐诧躬瀹曠喖顢涘☉姘箞闂佺澹堥幓顏嗗緤娴犲鍑犳繛鎴欏灪閻撴盯鎮橀悙棰濆殭濠碘€炽偢閺屽秶鎲撮崟顐や紝閻庤娲栧畷顒勶綖濠婂牆骞㈡慨妤€鐗忕壕鍏肩節閻㈤潧校妞ゆ梹鐗犲畷鎶筋敍濠婂啰绛忔繛瀵稿Т椤戝棝宕戠€n喗鐓欓柟瑙勫姦閸ゆ瑧绱掗悩宕囧濞e洤锕俊鍫曞磼濮橆偄顥氶梻鍌欑绾绢厾鍒掗鐐茬闁搞儜鍛閻熸粎澧楃敮鈺呭极婵犲洦鐓熼柨婵嗘噹椤ㄦ瑩姊洪褍鐏犻柍瑙勫灴閺佸秹宕熼鈩冩線闂備胶枪鏋柛濠冪箓閻g兘鏁愭径濠勵槰濡炪倖妫侀崑鎰板传濡ゅ懏鐓涘璺猴功婢ф垿鏌涢弬鍧楀弰闁糕晝鍋涢濂稿川椤忓懏鏉搁梻浣虹帛閿氱€殿喖鐖奸獮鏍箛椤斿墽锛滈梺缁樏悘姘跺吹閳ь剟姊婚崶褜妯€闁哄被鍔岄埞鎴﹀幢濡儤顏¢梻浣烘嚀瀵爼骞冮崒鐐茶摕婵炴垶顭傞悢铏圭<婵☆垵銆€閸嬫捇骞囬鐔峰伎婵犵數濮撮幊蹇涱敂閻樼數纾兼い鏃傛櫕閹冲洦顨ラ悙鏉戝闁诡垱妫冩慨鈧柍銉﹀墯娴煎棝姊婚崒姘偓鐑芥倿閿曗偓椤啴宕稿Δ鈧惌妤呭箹濞n剙濡肩紒鎰殕閹便劌螣閸喚鍘梺鎼炲€曠粔鐟邦嚕閸洖閱囨繛鎴灻‖瀣渻閵堝倹娅囬柛蹇旓耿楠炲啫螖閸涱喗娅滈柟鑲╄ˉ閳ь剝灏欓悥閬嶆⒒娴e摜绉烘い銉︽尵閸掓帡顢涘⿰鍕簥濠电偞鍨堕悷锔剧礊閸ヮ剚鐓曢柟鐐殔閸燁偊鎮¢崒鐐粹拻濞达絼璀﹂弨鐗堢箾閸涱喗绀嬮柟顔惧厴婵℃悂鍩℃担鍕剁畵閺岀喖鎮ч崼鐔哄嚒缂備胶濮垫繛濠囧蓟閻旇 鍋撳☉娆嬬細缂佺姵岣块幉鎼佸级濞嗙偓效婵烇絽娲ら敃顏堝箖濞嗘搩鏁傞柛鏇樺妼娴滈箖鏌″搴′簼闁哄棙绮撻弻鐔兼倻濮楀棙鐣剁紒鎯у⒔閹虫捇鍩為幋锔藉亹鐎规洖娴傞弳锟犳⒑缁嬪灝顒㈡い銊ユ閹广垹鈽夐姀鐘茶€垮┑鈽嗗灥椤曆囨瀹ュ鈷戠紓浣股戠亸浼存煟閻斿弶娅呮い鏇秮瀹曞ジ寮撮悙鍝勬暪闂備胶绮弻銊╁床閸欏鍙忛柕蹇嬪€栭埛鎴澝归崗鑲╂噰婵$虎鍠氱槐鎺楊敊閼恒儱纾抽悗娈垮枛椤兘宕洪崟顖氱闁宠桨绶¢埀顒佹尵缁辨挻鎷呴崜鎻掑壈缂備降鍔戞禍璺虹暦閹达箑绠婚悹鍥ㄧ叀閺佹粌鈹戞幊閸婃劙宕戦幘缁樼參闁告劦浜滈弸娑㈡煛鐏炵偓绀冪紒缁樼洴閹瑩顢楁担鍝勭稻闂傚倷鑳舵灙妞ゆ垵鎳庤灋婵犻潧顑呴拑鐔哥箾閹寸偟鐓繛宀婁邯閺屾盯骞樺璇蹭壕濠碘剝褰冮悧鍡涒€旈崘顔嘉ч柛娑橆嚟瀹曨亪姊洪悷鏉挎闁瑰嚖鎷�
  • #include "gd32l23x.h"
  • #include "systick.h"
  • #include "rtthread.h"
  • #include "gd32l233c_start.h"
  • /* 定义线程控制块指针 */
  • static rt_thread_t led1_thread = RT_NULL;
  • static rt_thread_t led2_thread = RT_NULL;
  • static rt_thread_t led3_thread = RT_NULL;
  • static rt_thread_t led4_thread = RT_NULL;
  • /* 函数声明 */
  • static void led1_thread_entry(void* parameter);
  • static void led2_thread_entry(void* parameter);
  • static void led3_thread_entry(void *parameter);
  • static void led4_thread_entry(void *parameter);
  • int main(void)
  • {
  • /* configure systick */
  • systick_config();
  • /* initilize the LEDs, USART and key */
  • gd_eval_led_init(LED1);
  • gd_eval_led_init(LED2);
  • gd_eval_led_init(LED3);
  • gd_eval_led_init(LED4);
  • led1_thread = rt_thread_create( "led1", /*线程名字*/
  • led1_thread_entry, /*线程入口函数*/
  • RT_NULL, /*线程入口函数参数*/
  • 256, /*线程栈大小*/
  • 2 , /*线程优先级*/
  • 20); /*线程时间片*/
  • led2_thread = rt_thread_create( "led2", /*线程名字*/
  • led2_thread_entry, /*线程入口函数*/
  • RT_NULL, /*线程入口函数参数*/
  • 256, /*线程栈大小*/
  • 3 , /*线程优先级*/
  • 20); /*线程时间片*/
  • led3_thread = rt_thread_create( "led3", /*线程名字*/
  • led3_thread_entry, /*线程入口函数*/
  • RT_NULL, /*线程入口函数参数*/
  • 256, /*线程栈大小*/
  • 4 , /*线程优先级*/
  • 20); /*线程时间片*/
  • led4_thread = rt_thread_create( "led4", /*线程名字*/
  • led4_thread_entry, /*线程入口函数*/
  • RT_NULL, /*线程入口函数参数*/
  • 256, /*线程栈大小*/
  • 5 , /*线程优先级*/
  • 20); /*线程时间片*/
  • /* start scheduler */
  • rt_thread_startup (led1_thread);
  • rt_thread_startup (led2_thread);
  • rt_thread_startup (led3_thread);
  • rt_thread_startup (led4_thread);
  • }
  • static void led1_thread_entry(void *parameter)
  • {
  • while (1)
  • {
  • gd_eval_led_toggle(LED1);
  • rt_thread_delay(200);
  • }
  • }
  • static void led2_thread_entry(void *parameter)
  • {
  • while (1)
  • {
  • gd_eval_led_toggle(LED2);
  • rt_thread_delay(400);
  • }
  • }
  • static void led3_thread_entry(void *parameter)
  • {
  • while (1)
  • {
  • gd_eval_led_toggle(LED3);
  • rt_thread_delay(600);
  • }
  • }
  • static void led4_thread_entry(void *parameter)
  • {
  • while (1)
  • {
  • gd_eval_led_toggle(LED4);
  • rt_thread_delay(800);
  • }
  • }

LED狂闪···

 

 

 

 

此帖出自GD32 MCU论坛

最新回复

这个点灯例程是用的官方代码么 感觉好复杂   详情 回复 发表于 2022-1-26 07:29
点赞 关注
 

回复
举报

6893

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

这个点灯例程是用的官方代码么

感觉好复杂

此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 2/10 下一条
有奖直播 | TI 助力机器人电机控制系统设计
直播时间:2月27日(周四)上午10:00
活动奖励:家具壶、保温杯、充电线

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表