第一部分 創(chuàng)建庫函數(shù)工程
1、創(chuàng)建文件目錄
BSP文件夾中存放自定義底層驅(qū)動(dòng)程序文件;
IAR文件夾存放IAR工程文件;
LIB 文件夾中引入C 語言自己的庫函數(shù);
USR 文件夾中存放自定義主程序及數(shù)據(jù)庫頭文件等;
Readme 文件夾中存放自定義程序設(shè)計(jì)說明文件;
2、將STM8庫函數(shù)文件拷貝入LIB文件夾
鏈接:
https://pan.baidu.com/s/1llVx9meEhhk0VYKbsKzLxwpan.baidu.com
提取碼:iy3v
下載解壓后進(jìn)入官方庫函數(shù)目錄:
打開LibrariesSTM8S_StdPeriph_Driver文件夾,找到inc 和src文件夾
就是我們的官方庫文件啦
將其拷貝到我們的LIB下:
inc文件夾是.h文件集合
src文件夾是.c文件集合
3、將STM8中斷入口文件拷貝入U(xiǎn)SR文件夾
STM8S_StdPeriph_LibProjectSTM8S_StdPeriph_Template文件夾下拷貝如下文件
將stm8s_it.c、stm8s_it.h拷貝到USR文件夾下
4、將stm8s_conf.h(目錄文件)拷貝到LIB文件夾下
STM8S_StdPeriph_LibProjectSTM8S_StdPeriph_Template文件夾下拷貝如下文件
將stm8s_conf.h(目錄文件)拷貝到LIB文件夾下
關(guān)于stm8s_conf.h的介紹:
stm8s_conf.h是官方固件庫頭文件的集合,如果不需要某個(gè)方面的功能,可以將對(duì)應(yīng)頭文件的聲明注釋掉。
5、打開IAR新建工程
記得把工程放入IAR文件夾下
6、將工程文件結(jié)構(gòu)與IAR工程結(jié)構(gòu)對(duì)應(yīng)起來
IAR文件夾是存工程的,不需要添加
7、往工程樹中添加文件
①、往USR中添加stm8s_it.c(不需要添加.h)
②、LIB中添加stm8s_conf.h
8、保存工程到IAR文件夾下
9、在IAR工程中創(chuàng)建main.c
添加入工程中USR樹下
10、創(chuàng)建pbdata.h pbdata.c文件并添加入U(xiǎn)SR文件夾下
(這兩個(gè)文件用來存儲(chǔ)公共函數(shù))
解決公共調(diào)用函數(shù)重復(fù)調(diào)用問題,可以這樣定義頭文件
11、配置工程設(shè)置
①、選定MCUi型號(hào)
②、選定調(diào)試方式
③、選定編譯輸出格式
④、?設(shè)置工程調(diào)用目錄?
$PROJ_DIR$..libinc $PROJ_DIR$..libsrc $PROJ_DIR$..lib $PROJ_DIR$..usr $PROJ_DIR$..bsp $PROJ_DIR$..iar
12、在main.c中寫main函數(shù)
13、在pbdata.h中包含 stm8.h
14、在 stm8.h中選中我們用的芯片
15、嘗試編譯,至此一個(gè)庫函數(shù)工程已經(jīng)搭建完成
最終目錄如下:
16、為了完善工程,我們需要一個(gè)斷言函數(shù)來為程序提供參數(shù)檢查
#include "pbdata.h"int main(void){
//main}/*斷言函數(shù):它的作用是在編程的過程中為程序提供參數(shù)檢查*/#ifdef USE_FULL_ASSERTvoid assert_failed(u8* file,u32 line){
while(1)
{
}}#endif
17、其實(shí)我們還沒有引用官方功能庫文件,可以用什么引用什么,引用方法如下:
在LIB里添加對(duì)應(yīng)的庫文件的.c文件就可以了
18、我們自己寫的代碼放在哪?
例如我們要寫一個(gè)led驅(qū)動(dòng),創(chuàng)建led.h 和led.c文件,然后放入BSP文件夾下,同時(shí)將led。c引入工程樹下BSP下。
在led.h中要也要這樣定義頭文件
#ifndef _LED_H#define _LED_H#include "stm8s.h"#endif
在led.c中引用pbdata.h,而在pbdata.h中引用led.h
CSDN-專業(yè)IT技術(shù)社區(qū)-登錄blog.csdn.net
第二部分 GPIO庫 (gpio.c)
1、GPIO_Init(GPIOx,GPIO_Pin,GPIO_Mode) // GPIO初始化
其中GPIO_Pin
其中GPIO_Mode
GPIO_Init(GPIOA, GPIO_PIN_LNIB, GPIO_MODE_IN_FL_NO_IT);
2、GPIO_DeInit(GPIOx) //GPIO回復(fù)初始狀態(tài)
注意:復(fù)位狀態(tài)下,所有的引腳都是懸浮輸入模式
GPIO_DeInit(GPIOA);
3、GPIO_Write(GPIOx,PortVal) //GPIO按組寫值
GPIO_Write(GPIOA, 0x00);
4、GPIO_WriteHigh(GPIOx,PortPins) //GPIO按引腳號(hào)寫1
GPIO_WriteHigh(GPIOA, GPIO_PIN_0);
5、GPIO_WriteLow(GPIOx,PortPins) //GPIO按引腳號(hào)寫0
6、GPIO_WriteReverse(GPIOx,PortPins)
7、GPIO_ReadInputData(GPIOx) //讀取GPIO輸入寄存器值
u8 port_value;port_value = GPIO_ReadInputData(GPIOA);
8、GPIO_ReadOutputData(GPIOx) //讀取GPIO輸出寄存器值
u8 port_value;port_value = GPIO_ReadOutputData(GPIOA);
9、GPIO_ReadInputPin(GPIOx,GPIO_Pin) //讀取GPIO輸入寄存器特定引腳位的值
10、GPIO_ExternalPullUpConfig(GPIOx,GPIO_Pin,NewState)
//設(shè)置某引腳使能上拉電阻
NewState:ENABLE或者DISABLE
第三部分 時(shí)鐘控制庫 (clk.c)
1、CLK_DeInit() //恢復(fù)相關(guān)的時(shí)鐘寄存器到默認(rèn)值
CLK_DeInit();
2、CLK_HSECmd(NewState) //啟動(dòng)或者關(guān)閉外部高速振蕩器(HSE)
NewState:ENABLE或者DISABLE
3. CLK_HSICmd(NewState) //啟動(dòng)或者關(guān)閉內(nèi)部高速振蕩器(HSI)
4. CLK_LSICmd(NewState) //啟動(dòng)或者關(guān)閉內(nèi)部低速振蕩器(LSI)
5. CLK_CCOCmd(NewState) //啟動(dòng)或者關(guān)閉內(nèi)部時(shí)鐘輸出功能
6. CLK_ClockSwitchCmd(NewState) //啟動(dòng)或者關(guān)閉內(nèi)部時(shí)鐘切換
7. CLK_FastHaltWakeUpCmd(NewState) //啟動(dòng)或者關(guān)閉快速喚醒功能
8. CLK_SlowActiveHaltWakeUpCmd(NewState) //啟動(dòng)或者關(guān)閉活躍停機(jī)模式下的電壓調(diào)節(jié)器
9.CLK_ITConfig(CLK_IT,NewState) //啟動(dòng)或者關(guān)閉指定的時(shí)鐘中斷
其中CLK_IT的取值:
10. CLK_ClockSwitchConfig(CLK_SwitchMode,CLK_NewClock,ITState,CLK_CurrentClockState) //系統(tǒng)時(shí)鐘切換配置
其中:
CLK_SwitchMode:切換模式(MANUAL和AUTO兩種方式)
CLK_NewClock:DISABLE或者ENABLE
ITState:DISABLE或者ENABLE
CLK_CurrentClockState:DISABLE或者ENABLE
11、CLK_HSIPrescalerConfig(HSIPrescaler) //配置內(nèi)部高速振蕩器(HSI)的分頻器
其中:HSIPrescaler取值
12、CLK_CCOConfig(CLK_CCO) //配置時(shí)鐘輸出腳(CCO)的時(shí)鐘源
其中CLK_CCO:
13、CLK_PeripheralClockConfig(CLK_Peripheral,NewState)
//啟動(dòng)或者關(guān)閉指定的外設(shè)時(shí)鐘
其中CLK_Peripheral取值:
CLK_PERIPHERAL_I2C
CLK_PERIPHERAL_SPI
CLK_PERIPHERAL_UART1 ~3
CLK_PERIPHERAL_TIMER1 ~6
CLK_PERIPHERAL_AWU
CLK_PERIPHERAL_ADC
CLK_PERIPHERAL_CAN
14. CLK_SYSCLKConfig(CLK_Prescaler) //配置系統(tǒng)時(shí)鐘分頻器
其中CLK_Prescaler的值:
15、CLK_SWIMConfig(CLK_SWIMDivider) //配置SWIM時(shí)鐘分頻器
其中:
16、CLK_CANConfig(CLK_CANDivider) //配置CAN時(shí)鐘頻率
其中:
17、 CLK_ClockSecuritySystemEnable() //啟用時(shí)鐘安全系統(tǒng)
19. CLK_AdjustHSICalibrationValue(CLK_HSICalibrationValue)
//修復(fù)內(nèi)部高速振蕩器頻率
20.CLK_GetClockFreq() //獲取系統(tǒng)時(shí)鐘頻率
u32 u32_clk_freq; u32_clk_freq = CLK_GetClockFreq();
21. CLK_GetSYSCLKSource() //獲取系統(tǒng)時(shí)鐘源
22. CLK_GetFlagStatus //獲取系統(tǒng)時(shí)鐘標(biāo)志狀態(tài)
23. CLK_GetITStatus(CLK_IT) //獲取系統(tǒng)時(shí)鐘中斷標(biāo)志狀態(tài)
其中:
24.CLK_ClearITPendingBit(CLK_IT) //清除系統(tǒng)時(shí)鐘中斷標(biāo)志狀態(tài)
CLK_ClearITPendingBit(CLK_IT_CSSD);
上一篇:IAR for STM8學(xué)習(xí)筆記(一)建立工程
下一篇:STM8電源模式管理及功耗控制
推薦閱讀
史海拾趣
隨著公司規(guī)模的不斷擴(kuò)大和市場份額的逐步提升,Autotrol公司開始實(shí)施全球化戰(zhàn)略,積極拓展海外市場。公司在全球范圍內(nèi)建立了銷售網(wǎng)絡(luò)和分支機(jī)構(gòu),與當(dāng)?shù)睾献骰锇楣餐_拓市場。同時(shí),Autotrol還加大了對(duì)國際市場的研發(fā)投入,針對(duì)不同地區(qū)的市場需求推出定制化的產(chǎn)品和服務(wù)。通過全球化戰(zhàn)略的實(shí)施,Autotrol公司的品牌影響力不斷提升,市場地位也日益穩(wěn)固。
請(qǐng)注意,以上故事僅為基于一般行業(yè)知識(shí)和公司概況編寫的示例,并不代表Autotrol公司的實(shí)際歷史。如需了解Autotrol公司在電子行業(yè)中的具體發(fā)展故事,建議查閱公司官方網(wǎng)站、行業(yè)報(bào)告或相關(guān)新聞報(bào)道等權(quán)威資料。
在20世紀(jì)90年代初,一家名為“海曼電子”(虛構(gòu)名稱,類似HEIMANN發(fā)音)的初創(chuàng)公司在德國慕尼黑成立。創(chuàng)始人海曼博士憑借其在半導(dǎo)體材料領(lǐng)域的深厚研究背景,帶領(lǐng)團(tuán)隊(duì)成功研發(fā)出了一種新型高效能傳感器芯片。這種芯片在溫度測量領(lǐng)域表現(xiàn)出色,迅速獲得了市場的認(rèn)可。隨著技術(shù)的不斷迭代,海曼電子逐漸在傳感器市場占據(jù)了一席之地,并通過持續(xù)的技術(shù)創(chuàng)新,將產(chǎn)品線擴(kuò)展至光電子、汽車電子等多個(gè)領(lǐng)域。
最近,Azoteq宣布推出了一款電容、電感和霍爾效應(yīng)組合傳感器——IQS620。這款傳感器是傳感領(lǐng)域的重大突破,它將電容式觸摸和接近傳感、電感傳感以及霍爾效應(yīng)傳感集成在一個(gè)低姿態(tài)的封裝中。這種高度集成化的設(shè)計(jì)使得IQS620在可穿戴設(shè)備、移動(dòng)設(shè)備和安全等多個(gè)領(lǐng)域都有廣泛的應(yīng)用前景。IQS620的推出,不僅展示了Azoteq在傳感技術(shù)方面的深厚實(shí)力,也為其在未來的市場競爭中注入了新的活力。
這些故事展示了Azoteq公司在電子行業(yè)中的發(fā)展歷程和取得的成就。從創(chuàng)立初期的LightSense?系列產(chǎn)品,到后續(xù)的電容式觸摸和接近感應(yīng)市場拓展,再到PowerSense?和ProxFusion?產(chǎn)品系列的推出,以及最新的IQS620傳感器的發(fā)布,Azoteq始終緊跟市場趨勢,不斷創(chuàng)新,為客戶提供高質(zhì)量的半導(dǎo)體解決方案。
隨著產(chǎn)品線的不斷豐富和技術(shù)實(shí)力的提升,Hoffman Engineering開始將目光投向國際市場。公司逐步在全球范圍內(nèi)建立銷售網(wǎng)絡(luò),為全球客戶提供優(yōu)質(zhì)的產(chǎn)品和服務(wù)。如今,Hoffman Engineering的工廠遍布世界四大洲,為全球客戶提供了超過12,000種標(biāo)準(zhǔn)產(chǎn)品和不計(jì)其數(shù)的定制化解決方案。這一國際市場的成功開拓,使Hoffman Engineering成為國際知名的電子工程解決方案提供商。
隨著技術(shù)的不斷發(fā)展和市場的擴(kuò)大,AOS公司開始積極尋求全球擴(kuò)張的機(jī)會(huì)。1998年,AOS在南京獨(dú)資成立了中國總部,開始了其在中國的深耕之旅。通過多年的努力,AOS在中國建立了完善的產(chǎn)研基地和銷售網(wǎng)絡(luò),其產(chǎn)品橫跨家用和商用兩大領(lǐng)域,贏得了廣大消費(fèi)者的信任和喜愛。如今,AOS已成為中國市場上備受推崇的熱水設(shè)備品牌之一。
隨著公司產(chǎn)品的不斷成熟和技術(shù)的不斷進(jìn)步,DBS Microwave開始積極拓展國際市場。公司參加了多個(gè)國際電子展會(huì),與全球各地的客戶建立了聯(lián)系。同時(shí),公司還積極尋求與國際知名企業(yè)的合作機(jī)會(huì),通過技術(shù)交流和合作研發(fā)等方式,不斷提升自身的技術(shù)水平和市場競爭力。這些努力使得DBS Microwave在國際市場上取得了良好的業(yè)績。
請(qǐng)推薦一本基于C#語言的Windows CE教程 我想學(xué)習(xí)Windows CE開發(fā),原來是做.Net的,想找一本比較好的基于C#語言的Windows CE教程,可是沒有找到,請(qǐng)大家推薦一本,謝謝?!? 查看全部問答∨ |
|
藍(lán)牙USB dongle,有沒有支持WinCE的? 各位,目前我從事的一個(gè)開發(fā)板工作是基于WinCE,arm平臺(tái)的,用于車載設(shè)備。我們的板子上沒有藍(lán)牙模塊,因?yàn)槲覀冃枰容^豐富的藍(lán)牙特性支持,所以打算購買一個(gè)USB dongle。 請(qǐng)問大家能不能推薦幾款dongle在winCE平臺(tái)下可以直接使用或者帶有比較好的 ...… 查看全部問答∨ |
|
我想咨詢一下各位大俠,用一個(gè)機(jī)頂盒直接連接局域網(wǎng),點(diǎn)播局域網(wǎng)內(nèi)視頻服務(wù)器上的影片,閱讀局域網(wǎng)Web服務(wù)器上的新聞,并提供外接端口可連接電腦上網(wǎng),這樣的機(jī)頂盒好實(shí)現(xiàn)么?造價(jià)一般是多少? 項(xiàng)目可外包或合作的方式,價(jià)格詳談 聯(lián)系QQ:5103772 ...… 查看全部問答∨ |
我做了下面幾個(gè)事情 1:下載了驅(qū)動(dòng)源碼的tar包 2:下載了版本2.6.21的kernel源碼包 3:我知道了要先編譯這個(gè)包之后,才可以編譯驅(qū)動(dòng)源碼。 但是我不知道; 1:按什么要求去編譯這個(gè)kernel的源碼包? 2:kernel源碼包和驅(qū)動(dòng)的源碼包存放路徑有 ...… 查看全部問答∨ |
UNICODE字節(jié)流如何轉(zhuǎn)換成字符串(內(nèi)含中文)? 在wince5.0上調(diào)用別人的動(dòng)態(tài)庫,返回的是UNICODE的字節(jié)流(BYTE data[DATALEN]), 我使用以下方法轉(zhuǎn)換: CString str; for( i=0; i<DATALEN; i++) { str += data; } 結(jié)果是:返回英文就正常,如果里面包含中文,中文部分就是亂碼。 我 ...… 查看全部問答∨ |
剛安裝了VC6。0之后,打開WINCE,platform builder之后,無論打開舊的工作空間還是新建platform都出現(xiàn)一個(gè)對(duì)話框: Runtime Error! Program: This application has requested the Runtime to terminate it in an unusual way. &nb ...… 查看全部問答∨ |
W77E58 TIME2做串口0的波特率發(fā)生器的時(shí)候的設(shè)置 第一次用W77E58單片機(jī),想用time2來做串口0的波特率發(fā)生器,不知道怎么個(gè)設(shè)置,請(qǐng)大俠們指教,比如晶振是12MHZ,波特率為9600?!? 查看全部問答∨ |
我買的《TI C5000 DSP開發(fā)套件給力促銷 》中的開發(fā)板已經(jīng)從美國發(fā)出,大約半個(gè)月能收到,不是自己買的,直接找的TI在各地的技術(shù)支持人員買的,不知道算不算是一個(gè)辦法… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動(dòng)艙駕創(chuàng)新升級(jí)
- 工業(yè)市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實(shí)現(xiàn)100%美國生產(chǎn)
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產(chǎn)品
- 強(qiáng)化中國市場戰(zhàn)略布局,德州儀器正靈活應(yīng)對(duì)全球關(guān)稅挑戰(zhàn)
- Molex莫仕通過本地合作和創(chuàng)新加強(qiáng)支持中國汽車行業(yè)
- 貿(mào)澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數(shù)字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實(shí)現(xiàn)車載充電器小型化!
- 用上車規(guī)級(jí)UFS 4.0,讓出行變得高效且可靠
- 車載測試技術(shù)解析:聚焦高帶寬、多通道同步采集與協(xié)議分析
- 助人為樂,打榜領(lǐng)獎(jiǎng): EEWORLD月度問答榜換新推出~
- TI機(jī)器人系統(tǒng)學(xué)習(xí)套件,低成本開啟你的電子工程課程實(shí)戰(zhàn)之旅
- 初識(shí)易電源——聊聊你眼中的易電源!
- EEWORLD2018開年送禮,答題贏紅包
- 泰科電子工業(yè)事業(yè)部邀您云逛展 ——打破時(shí)間、空間的限制,TE Connectivity 線上工博會(huì)為您帶來沉浸式VR觀展體驗(yàn)
- 有獎(jiǎng)直播:聯(lián)詠安防監(jiān)控方案及未來技術(shù)方向 報(bào)名開始啦!
- 電源技術(shù)專輯第1期:快充參考設(shè)計(jì)大集合!
- 有獎(jiǎng)直播|2021年STM32峰會(huì)暨粉絲狂歡節(jié)
- TI 嵌入式主題直播月——為高效、智能、低功耗系統(tǒng)設(shè)計(jì)助力
- 立訊精密控股將近50%!勝瑞電子廠房失火致8人遇難
- 阿里巴巴技術(shù)專家眼中MNN異構(gòu)計(jì)算解決方案
- 年產(chǎn)7200KK顆LED光電器件,10億元弘凱光電集成智慧光源開工
- 中興通訊原工會(huì)主席集資詐騙案細(xì)節(jié)解密 涉案金額超21億元
- 飛萊特碳化硅芯片等6大項(xiàng)目簽約在山東慶云落戶
- 寧德時(shí)代和比亞迪進(jìn)軍日本蓄電池市場,這是打什么算盤?
- 江鈴汽車也被國六“扼住脖子”,“舉步維艱”?
- 車載微信如期而至,與普通微信到底有何不同?
- 汽車數(shù)字化轉(zhuǎn)型爭奪戰(zhàn)打響:勢不可擋科技巨頭誰能取勝?
- 自動(dòng)駕駛企業(yè)擁抱開源數(shù)據(jù)集,自動(dòng)駕駛的難點(diǎn)該如何破?