導航:首頁 > 編程語言 > stm8s編程手冊

stm8s編程手冊

發布時間:2022-12-08 04:35:58

❶ STM8S103K3,ST的8位單片機,寄存器的位操作

在IAR裡面先是用了結構體struct的位域定義一個位元組的八位,然後再用聯合體union定義兩個變數,一個unsigned char NAME用於全局操作,一個BIT_STRUCT NAME ## _bit用於位操作。如果還不明白,請先了解結構體與聯合體。

❷ STM8的初始化裡面 while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE)這個什麼意思

首先,你要明白STM8的驅動時鍾可以採用外部晶振,也可採用STM8內部的RC振盪器,二者只能選其一。三個語句中的HSI表明是採用內部RC振盪器。

你先看STM8內部的時鍾樹結構:

看到了嗎?它是表明時鍾准備好了沒有的狀態標志,就像你去叫別人辦事,別人要經過考慮,這就需要等待,同理,你在STM8S內部配置好了時鍾後,內部需要產生一定的延遲,而且受各種狀況的影響,比如外部供電電壓變化、引腳干擾等,有可能導致配置時鍾失敗,這就要經過查詢這個寄存器的值來看是否配置好時鍾沒有,如果這個寄存器不等於0,則配置成功,否則失敗。第三句的while里的意思就是不斷地取CMSR的值,看是否等於宏定義CLK_SOURCE_HSI(OXE1),如果相等了,則跳過循環,繼續執行以後的語句。

❸ 求STM8S家族的微控制晶元的 中文的 編程手冊(pm0044)

同問,希望朋友們提供[email protected]

❹ STM8S系列程序示例

/*********************************************
* STM8S105* TIM2 TIM3輸出PWM PD0 PD3 TIM3輸出PWM,*********************************************/#include "STM8S105K.h"
#include "STM8S105_CLOCK.h"
typedef unsigned char u8;
typedef unsigned int u16;u16 value;
/*******************************************************************************
*** 函數名 : void SystemInit(void)
*** 功能描述: 系統初始化
*** 函數說明: 系統全局初始化
******************************************************************************/
void SystemInit(void)
{ SystemClock_Init();
CLK_PCKENR1 |= 0x60; //使能TIM2與TIM3與主頻連接

PD_CR2 |= 0x80; //使能PD7口外部中斷
}
/*******************************************************************************
*** 函數名 : void main(void)
*** 功能描述: 主函數
*** 函數說明:
******************************************************************************/
void GPIO_init(void)
{
PD_DDR = 0x1F; //配置PD埠的方向寄存器全輸出
PD_CR1 = 0x1F; //設置PD為推挽輸出
PB_DDR|= 0x04; //PB2輸出
PB_CR1|= 0x04; //PB2推挽輸出
PB_ODR|= 0x04; //開5V電源
}
void TIM2_init(void) //TIM2 CH1 工作於模式1
{
// TIM2_CCMR2= 0x60; // PWM 模式 1
TIM2_CCMR1= 0x60; // PWM 模式 1,TIM2 CH1
TIM2_CCER1= 0x03; // CC1配置為輸出
//TIM2_CCER2= 0x03; // CC3使能
TIM2_ARRH = 0x03; // 配置PWM解析度為10位,ARR=0x3FF
TIM2_ARRL = 0xFF; // PWM頻率=8M/0x03FF=7820Hz
TIM2_CR1 |= 0x01; // 計數器使能,開始計數
}

void TIM3_init(void) //TIM3 CH1 ch2工作於模式2,1
{
TIM3_CCMR1= 0x70; //PWM模式2
TIM3_CCMR2= 0x60; // PWM 模式 1
TIM3_CCER1= 0x33; // CC1 CC2配置為輸出,CH1 CH2

TIM3_ARRH = 0x03; // 配置PWM解析度為10位,ARR=0x3FF
TIM3_ARRL = 0xFF; // PWM頻率=8M/0x03FF=7820Hz
TIM3_CR1 = 0x01; // 計數器使能,開始計數
} void Run(void)
{ //TIM2_CCR2H = (unsigned char)(value>>8); // 更新CC2比較寄存器
//TIM2_CCR2L = (unsigned char)(value);
TIM2_CCR1=value;
//TIM2_CCR3=value;
TIM3_CCR2=value;
TIM3_CCR1=value; //注意每個通道都要設CCR
} void init_devices(void)
{
_asm("sim");
SystemInit();
GPIO_init();
TIM2_init();
TIM3_init();
_asm("rim");
} void main( void )
{
init_devices();
while(1)
Run();

} /****************************************************************************
*** 函數名 : @near @interrupt void TLI_IRQHandler (void)
*** 功能描述: 中斷服務程序
*** 函數說明:
*****************************************************************************/
@near @interrupt void TLI_IRQHandler (void) {
PD_CR2 &= 0x7F; //關PD7外部中斷
value+=50;
while(value>1000)
value=0; PD_CR2 |= 0x80; //使能PD7口外部中斷
return;
}

❺ STM8寄存器配置

1、Ox應該為i額0x
2、頭文件是否包含?沒有包含應包含,PD_DDR 等寄存器沒有定義。

❻ STM8S系列程序示例

/* MAIN.C file
* Function:實現按鍵S1控制LED和蜂鳴器
* Copyright (c) 2002-2005 STMicroelectronics
*/

#include "stm8s105c4.h"
_Bool LED1 @PA_ODR:6; //定義PA.6輸出寄存器為LED1
_Bool Beep @PD_ODR:4; //定義PD.4輸出寄存器為蜂鳴器
_Bool S1 @PD_IDR:2; //定義PD.2輸入寄存器為按鍵
//I/O初始化
void GPIO_Init(void)
{
PA_DDR = 0x40; //PA.6推挽輸出
PA_CR1 = 0x40;
PD_DDR = 0x10;//PD.2上拉輸入 、PD.4推挽輸出
PD_CR1 = 0x14;
}
main()
{
GPIO_Init();
while(1)
{
if(S1==0) //如果有按鍵則燈亮,蜂鳴器響
{
LED1 = 1;
Beep = 1;
}
else
{
Beep = 0;
LED1 = 0;
}
}
}

❼ stm8硬體手冊去哪下載

stm8硬體手冊去ST官網下載。
STM8s系列是意法半導體公司生產的8位的單片機。

❽ STM8的C語言延時及外部中斷編程

研究了下,你描述的邏輯好像有矛盾,
我疑問如下:

控制過程如下:
pin17(PC7)收到低電平脈沖信號(脈沖長度多少?),
計時器啟動(計數時間5秒?),
pin19(PD2)輸出高電平(在計數計數結束後輸出低電平?);
當m為奇數時,pin13(PC3)輸出高電平(PIN14輸出低電平?);
當m為偶數時,pin14(PC4)輸出高電平(PIN13輸出低電平?)。

最終計數結束後輸出狀態如何?

pin10(PA3)有高電平脈沖信號輸入時(脈沖長度多少?),
pin19(PD2)停止輸出(輸出低電平還是高電平?);
如果在一個計時周期內(5秒嗎?),
pin10(PA3)沒有高電平信號輸入(一直維持低電平嗎?),
則pin18(PD1)輸出高電平(有高電平脈沖信號時輸出低電平?)。

pin15(PC5)有高電平脈沖信號輸入時(脈沖長度多少?),
pin13(PC3)停止輸出(輸出低電平還是高電平?);
如果在一個計時周期內(5秒嗎?),
pin15(PC5)沒有高電平信號輸入(一直維持低電平嗎?),
且計數器值m為奇數,則pin18(PD1)輸出高電平(m是偶數時怎麼處理?)。

。。。。。。。。。。。

主要程序到底是觸發後輸出一個序列電平還是測量輸入脈沖?

❾ stm8s晶元的按鍵檢查程序怎麼寫啊我寫的按鍵是晶元沒反應,望高手給給調試成功的程序參考下

首先,按鍵的硬體電路,按鍵不按的時候常高或者常低,按鈕按下產生1個跳變,下降沿或者上升沿。
然後,軟體部分,將這個IO口配置為輸入模式,帶中斷功能,再然後編寫中斷事件即可,比如讓一個LED燈亮,或者串口輸出。
有問題可以用ST-LINK連接看看,Debug可以單步運行查看進度的,比51的年代強太多了

❿ 如何對STM8S的快閃記憶體存儲器和數據EEPROM編程

1.選項位元組的概念(參考stm8s中文數據手冊):
選項位元組包括晶元硬體特性的配置和存儲器的保護信息,這些位元組保存在存儲器中一個專用的
塊內。除了ROP(讀出保護)位元組,每個選項位元組必須被保存兩次,一個是通常的格式(OPTx)和
一個用來備份的互補格式(NOPTx)。可以在ICP模式(通過SWIM)下訪問下表中EEPROM的地址來修改選項位元組。
選項位元組也可以通過應用程序在IAP模式下修改,但是ROP選項只能在ICP模式(通過SWIM)下被
修改。
2.ISP IAP ICP的概念(有待學習):
ISP:In System Programing, 在系統編程 程序完全下載
IAP:In applicating Programing,在應用編程 我的理解是用應用程序去修改晶元里邊固定的一些數據(與應用編程無關的數據)
ICP:In Circuit Programing, 在電路編程
3.stm8s晶元的備用功能重映射:
stm8s晶元上帶有很多備用的功能,這些功能必須使用重映射功能才能實現,
重映射其實就是配置某個flash地址的某一位,使某個引腳具備備用功能或者默認功能的其中一個
而且一旦功能改,想恢復原來的功能必須重新寫入。
比如stm8s的PD4埠具有TIM2_CH1 功能和BEEP功能,默認的情況下是TIM2_CH1功能,
當我們要用到BEEP功能時必須寫選項字,將這個引腳重映射為BEEP功能。

閱讀全文

與stm8s編程手冊相關的資料

熱點內容
國貨哪個品牌最好app 瀏覽:949
看哪個app給錢最多 瀏覽:178
編程靠經驗嗎 瀏覽:759
c教程pdf下載地址 瀏覽:573
製作視頻哪個app有瘦臉功能 瀏覽:649
linux查看線程內存 瀏覽:509
命令行簽名apk 瀏覽:92
網頁照片旋轉源碼 瀏覽:842
QQ會員頭像源碼 瀏覽:263
內核命令行 瀏覽:324
腳本提取源碼器 瀏覽:930
smo源碼 瀏覽:877
為什麼要搭建單獨伺服器 瀏覽:480
編譯器有什麼控制 瀏覽:893
希爾伯特pdf 瀏覽:645
php數組全數字 瀏覽:647
解密塔羅牌小程序源碼 瀏覽:862
聚合跑分源碼 瀏覽:555
注冊dns伺服器寫什麼 瀏覽:881
linux安裝deb包 瀏覽:523