#include "stm8s103k.h"
int main(void)
{
CLK_CKDIVR = 0; // prescaler system clock = 1
while( (CLK_ICKR & 2)==0 ); // wait HSI ready
TIM1_ARR = 1600 - 1; // auto reload 100 usec
TIM1_CR1 = 1; // enable timer_1
while (1);
}
รันใน STVD + Cosmic
Register TIM1_CNTR ตัวนับของ TIM1
มันไม่ยอมเบรก ที่ค่า auto_reload (ค่า TIM1_ARR) ครับ
คือ มันนับจนสุด 0xFFFF ตลอดเลย
แต่พอ เอาโคด้นี้ ไปรันใน EWARM for STM8 ทำงานปกติดี คือ reload ค่า TIM1_ARR=1599 ทุกครั้ง
เป็นเพราะอะไรหรือครับ ต้องแก้ไขตรงไหน ให้มัน autoreload ที่ TIM1_ARR ครับ
อีกโค้ดนะครับ โคดเดียวกัน ทำเป็น Function ก่อน main()
/* ----------- ใน main.c ------------ */
#include "stm8s103k.h"
void system_config(){
CLK_CKDIVR = 0; // prescaler system clock = 1
while( (CLK_ICKR & 2)==0 ); // wait HSI ready
TIM1_ARR = 1600 - 1; // auto reload 100 usec
TIM1_CR1 = 1; // enable timer_1
}
int main(void)
{
system_config();
while (1);
}
รันใน STVD + Cosmic..
อันนี้หนักเลย Debug ไม่ผ่าน
มันขึ้นว่า missing prototype ที่บรรทัด.. system_config();
แต่ เอาไปวางใน EWARM for STM8 กลับทำงานได้ปกติ
เป็นเพราะอะไรหรือครับ
ต้องแก้ไข หรือผิดพลาดตรงไหนหรือครับ งมมา2 วัน
อันนี้ @_@! หนักเลย
ที่อยากใช้ STVD + Cosmic เพราะว่า
Cosmic_4.4.4 ล่าสุด มันไม่ Limit Code Size ครับ
แต่ IAR_EWARM for STM8 จำกัดที่ 8kB
Link download ครับ
http://www.cosmicsoftware.com/download.php
https://www.iar.com/iar-embedded-workbench/#!?architecture=STM8&device=STM8S103K3
ขอบคุณ สำหรับคำตอบล่วงหน้าครับ
:P
ลองดูตามนี้ครับ
TIM1_ARR = 1600 - 1; // auto reload 100 usec
ให้เปลี่ยนเป็น
TIM1_ARRH = 0x06; // Reload counter = 1599
TIM1_ARRL = 0x3F;
ส่วน Missing Prototype ให้ประกาศ Function ก่อนครับ
void system_config();
#include "stm8s103k.h"
void system_config();
void system_config(){
CLK_CKDIVR = 0; // prescaler system clock = 1
while( (CLK_ICKR & 2)==0 ); // wait HSI ready
TIM1_ARRH = 0x06; // Reload counter = 1599
TIM1_ARRL = 0x3F;
TIM1_CR1 = 1; // enable timer_1
}
int main(void)
{
system_config();
while (1);
}
ขอบคุณมากมายครับ
ประกาศฟังชัน บนหัวมัน เครื่องผมลองแล้ว ก็ไม่หายครับ
/* -------------------------------------------- */
และ ตอนนี้ รู้สาเหตุ แว้วว ครับ
ผมได้ email ถามไปยัง Cosmic_C.fr
พร้อมๆ กับ ถามไปในฟอรัม
https://my.st.com/public/STe2ecommunities/mcu/Lists/stm81/AllItems.aspx
ทาง Cosmic_C ตอบเมล์ ไวมาก หลังจากเมล์ไปเพียง 15 นาทีเอง
ขอบคุณ คุณ HUA Thanh-Liem แห่ง Cosmic.fr มากครับ
เค้าบอกว่า มันเกิดจาก -pp ของการตั้งค่าใน STVD-Complier ครับ
เพราะว่า -pp มันต้องการ Prototype ในการโคดดิ้ง
STVD ค่า Default Complier ของการติดตั้งครั้งแรก ไม่ใช่ Default :-\
เพิ่งมาจับ ใครจะไปรู้
ทางออกอีกทาง เค้าบอกว่า
ตอนสร้าง.. Prototype ( ){ /* code */ }
ให้เปลี่ยนเป็น.. Prototype ( void ) { /* code */ } ซะ
ผมลองทำตามดู ก็สามารถ Build ได้แว้วครับ
เผื่อบางคน มือใหม่ ติดปัญหาอย่างผมนะครับ
ขอบคุณสำหรับคำตอบทุกคนนะครับ
^_^!