直接通過地址常量對(duì)應(yīng)給寄存器賦值的方式是最簡捷的方式,但程序的可讀性極差(不容易地址常量值得知是對(duì)應(yīng)哪個(gè)寄存器),程序的可移植性差,為了提高程序的可讀性和可移植性,通常預(yù)定義符號(hào)常量和符號(hào)變量。
void SystemInit()
{
}
void delay(int t)
{
int i;
for( ;t>0; t--)
for(i=0;i<1000;i++);
}
int main()
{
*((unsigned int *)0x40021018) |= 0x1<<4; //開啟GPIOC時(shí)鐘
*((unsigned int *)0x40011000) &= ~(0x0F<<(4*0)); //對(duì)GPIOC_0設(shè)置為通用推挽輸出,最大速度50MHz
*((unsigned int *)0x40011000) |= (0x03<<(4*0));
while(1)
{
*((unsigned int *)0x40011010) |= 0x01<<(16+0); //對(duì)GPIOC_0復(fù)位
delay(1000);
*((unsigned int *)0x40011010) |= 0x01<<(0+0); //對(duì)GPIOC_0置位
delay(1000);
}
}
對(duì)上述main.c程序進(jìn)行如下改進(jìn):
1、在user文件夾下新建一個(gè)stm32f10x.h文件,其內(nèi)容為:
#define PERIPH_BASE ((unsigned int)0x40000000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000)
#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#define GPIOC_CRL *(unsigned int *)(GPIOC_BASE +0x00)
#define GPIOC_CRH *(unsigned int *)(GPIOC_BASE +0x04)
#define GPIOC_IDR *(unsigned int *)(GPIOC_BASE +0x08)
#define GPIOC_ODR *(unsigned int *)(GPIOC_BASE +0x0C)
#define GPIOC_BSRR *(unsigned int *)(GPIOC_BASE +0x10)
#define GPIOC_BRR *(unsigned int *)(GPIOC_BASE +0x14)
#define GPIOC_LCKR *(unsigned int *)(GPIOC_BASE +0x08)
#define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000)
#define RCC_BASE (AHBPERIPH_BASE + 0x1000)
#define RCC_APB2ENR *(unsigned int *)(RCC_BASE + 0x18)
定義這些標(biāo)示符后,可以通過對(duì)GPIOC_CRL等表示符直接賦值給相應(yīng)寄存器。
2、在main.c中包含上述頭文件,并使用對(duì)應(yīng)表示符操作寄存器
#include "stm32f10x.h"
void SystemInit()
{
}
void delay(int t)
{
int i;
for( ;t>0; t--)
for(i=0;i<1000;i++);
}
int main()
{
RCC_APB2ENR |= 0x1<<4; //開啟GPIOC時(shí)鐘
GPIOC_CRL &= ~(0x0F<<(4*0)); //對(duì)GPIOC_0設(shè)置為通用推挽輸出,最大速度50MHz
GPIOC_CRL |= (0x03<<(4*0));
while(1)
{
GPIOC_BSRR |= 0x01<<(16+0); //對(duì)GPIOC_0復(fù)位
delay(1000);
GPIOC_BSRR |= 0x01<<(0+0); //對(duì)GPIOC_0置位
delay(1000);
}
}
這種方式下,通過標(biāo)示符可以知道對(duì)應(yīng)哪個(gè)寄存器,方便編程和程序閱讀。
上一篇:使用STM32固件庫操作控制LED燈(CMSIS)(STM32_03)
下一篇:直接通過寄存器地址操作控制LED燈(STM32_01)
推薦閱讀
史海拾趣
對(duì)于計(jì)數(shù)型10鍵鍵盤編碼譯碼顯示電路,網(wǎng)友可能會(huì)有多個(gè)方面的問題,以下是一些常見問題及其回答:
一、設(shè)計(jì)基礎(chǔ)與原理
問題1:計(jì)數(shù)型10鍵鍵盤編碼譯碼顯示電路的基本組成是什么?
回答:計(jì)數(shù)型10鍵鍵盤編碼譯碼顯示電路主要由三部分組成:鍵盤編碼電路、譯碼電路和顯示電路。鍵盤編碼電路負(fù)責(zé)將按鍵的輸入轉(zhuǎn)換為對(duì)應(yīng)的編碼信號(hào);譯碼電路則將該編碼信號(hào)還原為可識(shí)別的信息或數(shù)據(jù);最后,顯示電路將譯碼后的信息以可視化的方式呈現(xiàn)出來。
問題2:編碼和譯碼在數(shù)字電路中的作用是什么?
回答:編碼是將信息或數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制代碼的過程,以便在數(shù)字系統(tǒng)中進(jìn)行監(jiān)測(cè)、控制、傳輸?shù)炔僮鳌6g碼則是編碼的逆過程,即將二進(jìn)制代碼還原為原始的信息或數(shù)據(jù),以便進(jìn)行顯示或進(jìn)一步處理。在計(jì)數(shù)型10鍵鍵盤編碼譯碼顯示電路中,編碼和譯碼是實(shí)現(xiàn)按鍵輸入到顯示輸出的關(guān)鍵步驟。
二、技術(shù)實(shí)現(xiàn)細(xì)節(jié)
問題3:如何實(shí)現(xiàn)10鍵鍵盤的編碼?
回答:實(shí)現(xiàn)10鍵鍵盤的編碼通常可以采用優(yōu)先編碼器。優(yōu)先編碼器能夠識(shí)別多個(gè)輸入信號(hào)中的最高優(yōu)先級(jí)信號(hào),并將其轉(zhuǎn)換為對(duì)應(yīng)的編碼輸出。在10鍵鍵盤中,可以將10個(gè)按鍵的輸入信號(hào)接入優(yōu)先編碼器的輸入端,通過編碼器的內(nèi)部邏輯處理,得到按鍵對(duì)應(yīng)的編碼輸出。
問題4:譯碼器如何選擇以滿足顯示需求?
回答:譯碼器的選擇應(yīng)根據(jù)顯示需求來確定。對(duì)于計(jì)數(shù)型10鍵鍵盤編碼譯碼顯示電路,如果顯示的是十進(jìn)制數(shù)字,則應(yīng)選擇能夠處理十進(jìn)制數(shù)的譯碼器,如74LS48等。此外,還需要考慮譯碼器的輸入位數(shù)、輸出類型(如共陽極或共陰極)以及驅(qū)動(dòng)能力等因素,以確保譯碼器能夠滿足顯示電路的要求。
問題5:顯示電路如何設(shè)計(jì)以兼容不同顯示器?
回答:顯示電路的設(shè)計(jì)應(yīng)兼顧譯碼器、驅(qū)動(dòng)器和顯示器三部分。首先,根據(jù)譯碼器的輸出選擇合適的驅(qū)動(dòng)器來驅(qū)動(dòng)顯示器。驅(qū)動(dòng)器的選擇應(yīng)考慮顯示器的類型(如七段數(shù)碼管、LED點(diǎn)陣等)、工作電壓和電流等因素。其次,根據(jù)顯示器的特性設(shè)計(jì)顯示電路,包括確定顯示方式(如靜態(tài)顯示或動(dòng)態(tài)顯示)、設(shè)置顯示亮度等。最后,通過連接譯碼器、驅(qū)動(dòng)器和顯示器,實(shí)現(xiàn)按鍵輸入到顯示輸出的完整電路。
三、常見問題與解決方案
問題6:如何解決按鍵沖突問題?
回答:按鍵沖突是指多個(gè)按鍵同時(shí)按下時(shí),電路無法正確識(shí)別所有按鍵的狀態(tài)。在計(jì)數(shù)型10鍵鍵盤編碼譯碼顯示電路中,可以通過采用優(yōu)先編碼器來避免按鍵沖突問題。因?yàn)閮?yōu)先編碼器能夠識(shí)別最高優(yōu)先級(jí)的按鍵信號(hào),并忽略其他低優(yōu)先級(jí)的按鍵信號(hào)。此外,還可以通過軟件算法來進(jìn)一步處理按鍵沖突問題,如設(shè)置按鍵去抖動(dòng)時(shí)間、檢測(cè)按鍵按下和釋放的時(shí)間差等。
問題7:如何提高電路的抗干擾能力?
回答:提高電路的抗干擾能力可以從多個(gè)方面入手。首先,選擇具有良好抗干擾性能的元器件和電路布局方式;其次,在電路設(shè)計(jì)中加入濾波、去耦等電路來抑制干擾信號(hào);最后,通過軟件算法來識(shí)別和排除干擾信號(hào)的影響。此外,還可以采用屏蔽、接地等外部措施來進(jìn)一步提高電路的抗干擾能力。
以上是對(duì)計(jì)數(shù)型10鍵鍵盤編碼譯碼顯示電路中網(wǎng)友可能提出的問題及其回答的總結(jié)。在實(shí)際應(yīng)用中,還需要根據(jù)具體需求和條件進(jìn)行靈活調(diào)整和優(yōu)化。
為了進(jìn)一步擴(kuò)大市場(chǎng)份額,Comchip Technology積極開拓國內(nèi)外市場(chǎng),與多家知名企業(yè)建立了長期穩(wěn)定的合作關(guān)系。同時(shí),公司還加強(qiáng)了與國際同行的交流與合作,引進(jìn)了先進(jìn)的技術(shù)和管理經(jīng)驗(yàn),不斷提升自身的競(jìng)爭力。
在發(fā)展過程中,Astec意識(shí)到單打獨(dú)斗難以應(yīng)對(duì)日益激烈的市場(chǎng)競(jìng)爭。因此,公司開始積極尋求與其他企業(yè)的戰(zhàn)略合作,共同開拓市場(chǎng)。通過與上下游企業(yè)的緊密合作,Astec成功整合了產(chǎn)業(yè)鏈資源,實(shí)現(xiàn)了從原材料采購到產(chǎn)品生產(chǎn)的全面優(yōu)化。這不僅提高了公司的生產(chǎn)效率,還降低了成本,進(jìn)一步增強(qiáng)了公司的市場(chǎng)競(jìng)爭力。
Astec America, Inc的創(chuàng)立可以追溯到上世紀(jì)80年代,當(dāng)時(shí)創(chuàng)始人看到了電源技術(shù)的巨大潛力,并決定在這一領(lǐng)域進(jìn)行深耕。公司初創(chuàng)時(shí)期,團(tuán)隊(duì)主要專注于電源技術(shù)的研發(fā),推出了一系列具有創(chuàng)新性的電源產(chǎn)品。這些產(chǎn)品不僅性能穩(wěn)定、效率高,而且價(jià)格合理,很快就在市場(chǎng)上獲得了良好的口碑。
隨著電子行業(yè)的快速發(fā)展和市場(chǎng)競(jìng)爭的加劇,eMemory始終保持著對(duì)新技術(shù)和新市場(chǎng)的敏銳洞察力。公司不斷推出新的硅智財(cái)產(chǎn)品和解決方案,以滿足客戶不斷變化的需求。同時(shí),eMemory還積極拓展國際市場(chǎng),與全球多家知名芯片設(shè)計(jì)廠商建立了長期穩(wěn)定的合作關(guān)系。這些努力使得eMemory在電子行業(yè)中保持著領(lǐng)先地位,并為其未來的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
Electrocube Inc公司高度重視產(chǎn)品質(zhì)量管理。公司建立了嚴(yán)格的質(zhì)量管理體系,從原材料采購到生產(chǎn)流程控制,再到產(chǎn)品檢驗(yàn)和售后服務(wù),每一個(gè)環(huán)節(jié)都嚴(yán)格把關(guān)。這種對(duì)質(zhì)量的執(zhí)著追求,使得Electrocube Inc公司的產(chǎn)品具有極高的可靠性和穩(wěn)定性,贏得了客戶的信賴和好評(píng)。
調(diào)試好的can(匯編及C語言)程序,sja1000+tja1040 調(diào)試好的can(匯編及C語言)程序,與大家分享! //************************************程序功能***************************************************//節(jié)點(diǎn)1向CAN節(jié)點(diǎn)2發(fā)送數(shù)據(jù),數(shù)據(jù)的頭兩個(gè)字節(jié)分別是:節(jié)點(diǎn)1的ID和要求節(jié)點(diǎn)2回復(fù)的數(shù)據(jù)長度//節(jié) ...… 查看全部問答∨ |
|
看了版主的博客,自己也很想用單片機(jī)做點(diǎn)事情。馬上快畢業(yè)了,發(fā)現(xiàn)自己沒有真正學(xué)到什么本領(lǐng)。最近找了個(gè)項(xiàng)目練手。用單片機(jī)做一個(gè)光源追蹤的裝置。大體是:弄2個(gè)光敏電阻,中間放一個(gè)擋板,光照偏向任何一個(gè)光敏電阻都會(huì)引起電機(jī)轉(zhuǎn)動(dòng)調(diào)整光敏電阻 ...… 查看全部問答∨ |
#include <AT89X52.H> unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code digittab[10][8]={{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0 &nbs ...… 查看全部問答∨ |
哪位大蝦能發(fā)給我個(gè)串口通信的實(shí)例呀??最好用EVC寫的。。感激涕零。\\ 我的郵箱6094189ye@163.com 我看到書上有CSerial 這個(gè)類,但STANDARDSDK下面沒有這個(gè)類呀。。。???… 查看全部問答∨ |
我的是DELL1501本本,要實(shí)現(xiàn)純DOS下使用串口(RS232)通信,在市場(chǎng)上買了個(gè)prolific USB轉(zhuǎn)串口,不知是否可行?之前試過在DOS下可以使用USB鼠標(biāo),和讀取USB軟驅(qū)(B:)里的資料!… 查看全部問答∨ |
也是偶然看到一個(gè)節(jié)目,當(dāng)初算是有炒作的因素在里面,是北大才子賣豬肉。好像是廣州那邊的,某人在九幾年的時(shí)候從政府辭職下海,前后做過房地產(chǎn)、醋飲料等。讓我感興趣的是,當(dāng)其瞅準(zhǔn)豬肉市場(chǎng)時(shí),帶著自己手下千來口子,一齊轉(zhuǎn)型。于是那些人一齊跨 ...… 查看全部問答∨ |
我的電腦是筆記本,現(xiàn)在要ISP燒程序,用了一個(gè)BUS轉(zhuǎn)RS232的轉(zhuǎn)接卡,主控芯片是PL-2303,晶振12M,BUS轉(zhuǎn)RS232后 我設(shè)置為端口2; 現(xiàn)在我用的單片機(jī)STM32F103C8T6,在使用STMicroelectronics Flas ...… 查看全部問答∨ |
針對(duì) Xilinx Spartan™-6 LX150 的電源參考設(shè)計(jì) 此參考設(shè)計(jì)旨在給Spartan 6 LX150及帶有TI Swift Integrated FETS的DC/DC轉(zhuǎn)換器供電… 查看全部問答∨ |
最近做了看了看虛擬存儲(chǔ)器的相關(guān)知識(shí),覺得有必要總結(jié)一下,分享一下自己的理解吧。http://blog.chinaunix.net/space.php?uid=20937170&do=blog&id=2983528… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無線智能控制器的設(shè)計(jì)
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- 充電樁行業(yè)太卷,該涉足嗎?
- 挑戰(zhàn)極限壓強(qiáng):吉利神盾金磚電池的結(jié)構(gòu)工程設(shè)計(jì)
- 保隆科技TPMS爆胎監(jiān)測(cè)技術(shù),為高速爆胎穩(wěn)定控制打造安全屏障
- 人形機(jī)器人產(chǎn)業(yè)標(biāo)準(zhǔn)互認(rèn)計(jì)劃啟動(dòng),機(jī)器人板塊震蕩攀升
- 全球首發(fā)!T246低溫高倍率型正極材料問世,重卡/儲(chǔ)能應(yīng)用迎革命性突破
- 100億元!非洲最大動(dòng)力電池基地正式啟動(dòng)建設(shè)
- 4D毫米波雷達(dá)能取代激光雷達(dá)嗎?
- LG Innotek首發(fā)車載5G衛(wèi)星通信模塊,傳輸速率數(shù)十Mbps
- 吉利吉曜通行發(fā)布超級(jí)混動(dòng)電芯,11.5分鐘末端快充革命
- 創(chuàng)晟半導(dǎo)體完成近億元融資:車規(guī)通信芯片技術(shù)突破
- 英特爾FPGA可編程加速平臺(tái)介紹,走近AI、數(shù)據(jù)中心、基因工程等大咖工程
- “搜器件”小程序又添新功能!
- 直播|基于英特爾® Agilex™ FPGA F-Tile的以太網(wǎng)硬核IP詳解及如何使用oneAPI對(duì)FPGA編程
- 報(bào)名抽取京東卡|2021慕尼黑華南電子展觀眾注冊(cè)進(jìn)行中
- 下載有禮|終于找到秘籍,示波器探頭的選擇和使用就靠它了!
- 愛“拼”才會(huì)贏 英飛凌柵極驅(qū)動(dòng)IC拼圖闖關(guān) 活動(dòng)開始啦!
- Littelfuse 新品賦能電子產(chǎn)品安全可靠并高效, 10+挑戰(zhàn)等你探索!
- 速度與激情,為你私人訂制。R&S攜多功能基礎(chǔ)示波器帶你身臨其境!
- 樂享愜意春天,TI A8開源硬件平臺(tái)體驗(yàn)季!
- 美國:你放了高通,中國:你放了中興
- Efinix與M31合作推出新興人工智能(AI)邊緣計(jì)算需求的解決方案
- 諾基亞新品即將發(fā)布:將于5月29日莫斯科舉行
- 為何尼康、索尼、奧林巴斯等日企抱團(tuán)撤離大陸?
- 一輛汽車需要360安全衛(wèi)士嗎?
- 2017智能制造世界巡禮之英國篇(機(jī)器人)
- 2018中國65家機(jī)器人產(chǎn)業(yè)園布局與規(guī)劃匯總盤點(diǎn)
- 凌華科技加入機(jī)器人操作系統(tǒng)(ROS)全球開放源碼計(jì)劃
- 工業(yè)機(jī)器人預(yù)防性保養(yǎng)有多重要?
- ARENA為澳大利亞首個(gè)壓縮空氣儲(chǔ)能系統(tǒng)提供資金支持
- 求助語音存儲(chǔ)與回放的一些問題?
- 直流鎳氫充電器3
- 2020 年 4月全國程序員工資出爐,為什么我們一直被平均???
- EEWORLD大學(xué)堂----嵌入式課程
- 現(xiàn)在哪些元器件平臺(tái)效果好???icmoto、華強(qiáng)、云漢等?
- error: can\'t open file \'/.obj\' for input
- code generator端口不能操作定義的問題
- 第一次沒到60,之后答了兩次 都沒有顯示 是什么情況啊
- WaitForMultipleObjects用得對(duì)么??
- 【轉(zhuǎn)帖】運(yùn)算放大器和比較器究竟有什么區(qū)別?