คำถามติดแท็ก c

C เป็นภาษาที่ใช้งานระบบ (ขั้นตอน) ที่จำเป็น มันถูกออกแบบมาให้คอมไพล์โดยใช้คอมไพเลอร์ที่ค่อนข้างตรงไปตรงมาเพื่อให้เข้าถึงหน่วยความจำระดับต่ำเพื่อสร้างภาษาที่แมปได้อย่างมีประสิทธิภาพกับคำสั่งของเครื่องจักรและต้องการการสนับสนุนเวลาทำงานน้อยที่สุด C จึงมีประโยชน์สำหรับแอปพลิเคชั่นมากมายที่เคยเขียนโค้ดในภาษาแอสเซมบลี จาก http://en.wikipedia.org/wiki/C_(programming_language)

2
ระบบเมนูข้อความ LCD มาตรฐาน
มีรูปแบบสำหรับระบบเมนูอย่างง่ายใน C สำหรับจอแอลซีดีข้อความหรือไม่ ฉันพบว่าตัวเองกำลังเขียนรหัสใหม่มากสำหรับการจัดการเมนูข้อความ LCD แบบง่าย ฉันพบว่าระบบส่วนใหญ่มีเมนูหลักและเมนูย่อยบางรายการที่เมื่อเลือกไว้ให้คุณตั้งค่าพารามิเตอร์ด้วยค่าต่ำสุดและค่าสูงสุด โดยหลักการแล้วระบบเมนูนี้สามารถใช้งานด้วยปุ่มง่าย ๆ 4 ปุ่มเช่นป้อน, ยกเลิก, ขึ้นและลง ในแอปพลิเคชันของฉันฉันกำลังใช้จอ LCD ขนาด 2 บรรทัด x 16 ตัวอักษรแม้ว่าทางออกที่ดีควรจะสามารถนำไปใช้กับจอแสดงผล NxM ใด ๆ
10 lcd  c 

4
STM32: การขัดจังหวะตัวจับเวลาทำงานทันที
นี่คือรหัสสำหรับตัวจับเวลาในโครงการของฉันบน STM32F429: //timer initialization void timerInit() { uwPrescalerValue2 = (uint32_t) ((SystemCoreClock / 2) / 100000) - 1; RS485Timer.Instance = TIM5; RS485Timer.Init.Period = 67400000; // high value to notice interrupt even without debugging RS485Timer.Init.Prescaler = 400000; RS485Timer.Init.ClockDivision = 0; RS485Timer.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_TIM_Base_Init(&RS485Timer); } void timerReset() { HAL_TIM_Base_Stop_IT(&RS485Timer); HAL_TIM_Base_DeInit(&RS485Timer); HAL_TIM_Base_Init(&RS485Timer); HAL_TIM_Base_Start_IT(&RS485Timer); …

7
Arduino Serial print เปลี่ยนแปลงพฤติกรรมของโปรแกรมที่ไม่พึงปรารถนา
ฉันใช้ตัวนับลูปที่ประกาศในส่วนหัว: int loop_counter = 0; ฉันใช้ตัวนับนี้เพื่อกระตุ้นเหตุการณ์ทุกครั้ง ฉันเคยใช้โมดูโล่สำหรับพฤติกรรมประเภทเดียวกันนี้ แต่ฉันทำให้มันง่ายขึ้นดังนั้นมันจึงทำงานได้ง่ายขึ้น (มันยังคงส่งผลให้เกิดพฤติกรรมเดียวกัน) void loop() { if(loop_counter > 100) loop_counter = 0; else loop_counter++; //Serial.println("hey"); if(loop_counter == 0) { //do_something_important(); } } ทั้งหมดเป็นสิ่งที่ดีและดีจนกระทั่งฉันพยายามสื่อสารด้วยSerialการไม่แสดงความคิดเห็น//Serial.println("hey"); ( "hey"ในตัวอย่างนี้เพราะสำหรับฉันพฤติกรรมนี้ไร้สาระ) ผลลัพธ์นี้จะloop_counterไม่เรียกdo_something_important();ส่วนของรหัส ฉันพยายามประกาศloop_counterเป็นvolatileที่ไม่ได้เปลี่ยนแปลงอะไร ฉันลองSerial.printไอเอ็นจีloop_counterและฉันยังได้รับพฤติกรรมแปลก ๆ (มันจะหยุดวน) Serial.println("hey");ทำงานในแง่ที่ว่าใน Serial Monitor ฉันได้รับ "hey" มากมาย (เช่นเร็วกว่า 100 "heys" จำนวนการวนซ้ำที่ส่วนอื่น ๆ ของรหัสควรเรียกใช้) สิ่งที่อาจทำให้เกิดการใช้งานSerialกับข้อมูลที่ไม่ได้ (เท่าที่ฉันสามารถบอกได้) …

2
การพิมพ์อักขระตัวแปรไปยัง UART ไม่ทำงานค่าคงที่ทำงานได้ดี
ฉันมีปัญหาที่ค่อนข้างแปลกด้วย XC8 ในไมโครคอนโทรลเลอร์ PIC18F27K40 ใน PIC16F1778 มันใช้งานได้ ฉันได้กำหนด: void uart_putch(unsigned char byte) { while (!PIR3bits.TX1IF); TX1REG = byte; } เมื่อในของฉันmainห่วงผมเรียกuart_putch('a');นี้ทำงานได้ดี อย่างไรก็ตามเมื่อฉันกำหนดconst char c = 'a';และโทรuart_putch(c);มันไม่ทำงาน มันพิมพ์อะไรบางอย่าง แต่ไม่ได้a- ฉันคิดว่าพวกเขาเป็นตัวละครที่ฉันได้รับจาก0x00 hexdump -x /dev/ttyUSB0นี่ไม่ใช่ปัญหากับพอร์ตอนุกรมในคอมพิวเตอร์ของฉัน ฉันมองด้วยขอบเขตและสัญญาณแตกต่างกัน (ทำงานซ้ายใช่ไหม): รหัสง่าย ๆ : void main(void) { init(); // Sets up ports and UART control registers while (1) …

4
ทำไมคอมไพเลอร์ GCC จึงไม่ใช้รหัสบางอย่าง
ฉันไม่สามารถเข้าใจว่าทำไม GCC คอมไพเลอร์ตัดส่วนของรหัสของฉันในขณะที่มันรักษารหัสเดียวกันในละแวก? รหัส C: #define setb_SYNCO do{(PORTA|= (1<<0));} while(0); ISR(INT0_vect){ unsigned char i; i = 10; while(i>0)i--; // first pause - omitted setb_SYNCO; setb_GATE; i=30; clrb_SYNCO; while(i>0)i--; // second pause - preserved clrb_GATE; } ส่วนที่สอดคล้องกันของ LSS (ไฟล์แอสเซมเบลอร์ที่สร้างโดยคอมไพเลอร์): ISR(INT0_vect){ a4: 1f 92 push r1 a6: 0f 92 push r0 a8: …
9 avr  c  avr-gcc  optimization  gcc 

5
เครื่องมือหรือมาตรฐานใดที่สามารถใช้เพื่อปรับปรุงความน่าเชื่อถือของรหัส C แบบฝัง
ฉันมักจะเขียนโปรแกรม PICs ใน C โดยปกติสำหรับตัวแปลงโหมดสวิตช์ ฉันเคยได้ยินเครื่องมือและมาตรฐานการวิเคราะห์แบบคงที่ต่างๆเช่นMISRA Cที่สามารถใช้เพื่อช่วยปรับปรุงความน่าเชื่อถือของรหัส ฉันต้องการทราบข้อมูลเพิ่มเติม มาตรฐานหรือเครื่องมือใดที่อาจเหมาะสมกับบริบทของฉัน

2
ตรีโกณมิติจุดคงที่สำหรับ aplications แบบฝัง
ฉันต้องทำการแปลงแบบหมุน (และอื่น ๆ ) ในแอปพลิเคชันแบบฝังที่ต้องการฟังก์ชัน sin () cos () และ tan () ฉันรู้ว่าคุณสามารถใช้ตารางการค้นหาและนั่นเป็นทางออกเดียวที่ฉันสามารถหาการวิจัยของฉันเอง แต่มีห้องสมุดตรีโกณมิติที่มีจุดคงที่หรือไม่? ฉันกำลังคิดว่าจะใช้ Cortex M3 สำหรับแอปพลิเคชันดังนั้นฉันจึงต้องการอยู่ห่างจากจุดที่เป็นไปได้มากที่สุดเพื่อให้แอปพลิเคชันมีกำลังใจ
9 c  embedded  arm 

1
การจำลองม้านั่งทดสอบอย่างง่ายด้วยแกน ROM สังเคราะห์
ฉันใหม่กับโลกของ FPGA อย่างสมบูรณ์และคิดว่าฉันจะเริ่มต้นด้วยโครงการที่ง่ายมาก: ตัวถอดรหัส 7 บิตแบบ 4 บิต รุ่นแรกที่ฉันเขียนอย่างหมดจดใน VHDL (โดยทั่วไปเป็น combinatorial เดียวselectไม่จำเป็นต้องใช้นาฬิกา) และดูเหมือนว่าจะทำงานได้ แต่ฉันก็อยากจะทดลองกับ "IP Cores" ใน Xilinx ISE ดังนั้นตอนนี้ฉันใช้ GUI "ISE Project Explorer" และฉันสร้างโครงการใหม่ด้วย ROM core รหัส VHDL ที่สร้างขึ้นคือ: LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- synthesis translate_off LIBRARY XilinxCoreLib; -- synthesis translate_on ENTITY SSROM IS PORT ( clka : …

3
โทร Serial.print ในไฟล์แท็บ / ส่วนหัวแยกต่างหาก
ฉันกำลังเขียนโปรแกรมใน Arduino 0022 การโทรSerial.printlnทำงานได้ดีในรหัสร่างหลักของฉัน แต่เมื่อฉันพยายามใช้ในไฟล์ส่วนหัว " Menu.h" ซึ่งอยู่ในแท็บแยกต่างหากฉันได้รับข้อผิดพลาด: ในไฟล์ที่รวมจาก AppController.cpp: 2: Menu.h: ในตัวสร้าง 'เมนู :: เมนู ()': เมนู: 15: ข้อผิดพลาด: 'อนุกรม' ไม่ได้ประกาศไว้ในขอบเขตนี้ ฉันจะใช้Serial.printlnนอกรหัสร่างได้อย่างไร
9 arduino  c 

5
เริ่มต้นด้วย C ที่ฝังตัวพร้อม ATmega32 (ATmega AVR series)
ฉันมีบอร์ด ATmega32 วางอยู่รอบ ๆ และฉันคิดว่ามันสมบูรณ์แบบที่จะเริ่มต้นด้วยไมโครคอนโทรลเลอร์ ฉันเคยพูดพล่ามใน C ที่ฝังอยู่ (นั่นคือเมื่อฉันได้รับบอร์ดนี้) แต่การไหลก็หยุดเนื่องจากบางสิ่ง ตอนนี้ฉันมีสองคำถาม: ทรัพยากรฟรีที่ดีที่สุดในการเริ่มต้นด้วย C สำหรับซีรีส์ avr คืออะไร ฉันรู้จัก AVR-GCC แล้ว แต่กำลังมองหาบทเรียนหรือหนังสือฟรีเพื่อเริ่มต้นฉัน ฉันควรข้ามไปที่ C โดยตรงหรือผ่าน ASM ก่อนหรือไม่ ฉันเห็นว่ามีหนังสือ asm มากมายอยู่รอบตัว ดังนั้นตัวเลือกที่ดีกว่าคืออะไร? ในขณะที่ค้นหาอินเทอร์เน็ตฉันพบ Arduino bootloader สำหรับ ATmega32 ที่นี่http://retrointerfacing.com/?p=30แต่ปัญหาคือฉันลังเลที่จะทำการแก้ไขด้วยฟิวส์และทั้งหมด ปลอดภัยไหมที่จะทำเช่นนั้น?
9 avr  atmega  books  c 

5
เป็นไปได้ไหมที่จะเขียนโค้ดใน C ++ สำหรับไมโครคอนโทรลเลอร์ PIC ในอนาคต?
เป็นไปได้ไหมที่จะใช้ C ++ สำหรับการเข้ารหัส PICs? มีข้อ จำกัด ด้านฮาร์ดแวร์ใด ๆ ที่ทำให้เราไม่สามารถใช้ C ++ ได้หรือไม่? ขนาดของไฟล์. hex ที่สร้างขึ้นและเวลาในการทำงานของโปรแกรมเพิ่มขึ้นเท่าใดเมื่อเราใช้ C ++ แทน C? เป็นไปได้หรือไม่ที่จะใช้ C ++ สำหรับ PIC ปัจจุบัน มีแผนในอนาคตหรือการพัฒนาอย่างต่อเนื่องในเรื่องนี้หรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.