em cũng nghĩ là A =const thì chương trình biên dịch sẽ tự tính.bác cho em hỏi luôn là khai báo void function(unsigned int *A) và void function(unsigned int A) khác nhau như thế nào .và khi nào thì dùng void function(unsigned int *A)
Thảo luận về ARM LPC 2138/2148
Collapse
X
-
void function(unsigned int *A) là có kiểu tham số là con trỏ, con trở này trỏ tới địa chỉ của 1 biến dạng unsigned int... Còn kiểu void function(unsigned int A) thì đơn giản tham số là biến unsigned int thôi,Nguyên văn bởi qkhanh Xem bài viếtem cũng nghĩ là A =const thì chương trình biên dịch sẽ tự tính.bác cho em hỏi luôn là khai báo void function(unsigned int *A) và void function(unsigned int A) khác nhau như thế nào .và khi nào thì dùng void function(unsigned int *A)
- Dùng kiểu tham số con trỏ như trên ví dụ function(p->field) trong đó p là một kiếu struct nào đó, còn field là trường của struct đó mà có kiểu unsigned int.
Thế nhá.
Or call me 0903911109
Comment
-
các bác cho em hỏi một câu nữa về timer . em đang học lập trình timer bước đầu tiên là tạo trễ dùng timer tuy nhiên đang vướng mắc ở chỗ, nếu không dùng ngắt thì khi giá trị TC bằng với các thanh ghi MR0-MR3 hoặc khi timer tràn thì làm thế nào biết được để thoát khỏi hàm trễ và reset timer em đọc tài liệu thì chó các bit trong thanh ghi TxIR ( x là tên timer) set lên 1 có đúng ko
Comment
-
Minh moi tap tanh thu nghiem ve ARM, da mua mot kit thi nghiem ARM tu My ma chua biet phai thuc hien the nao?
Cac ban cho minh hoi can nhung phan mem gi de viet Code + Chay thu+ Nap vao cho LPC 2148.Last edited by tranduythai; 01-04-2010, 13:46.
Comment
-
Kit của bạn tên là gì vậy, phần mềm viết code và chạy code thường là Keil, rất phổ biến và dễ dùng, tuy nhiên cần phải *****... hoặc có tiền thì mua luôn cai license cảu Keil.. nhưng sẽ đắt lắm đó.
Or call me 0903911109
Comment
-
Để tạo trễ bằng timer0, nếu ko dùng ngắt thì ko cần thiết dùng MR0-MR3 làm gì cả, MR0-MR3 có 3 chức năng: tạo ngắt, reset timer, và stop timer.Nguyên văn bởi qkhanh Xem bài viếtcác bác cho em hỏi một câu nữa về timer . em đang học lập trình timer bước đầu tiên là tạo trễ dùng timer tuy nhiên đang vướng mắc ở chỗ, nếu không dùng ngắt thì khi giá trị TC bằng với các thanh ghi MR0-MR3 hoặc khi timer tràn thì làm thế nào biết được để thoát khỏi hàm trễ và reset timer em đọc tài liệu thì chó các bit trong thanh ghi TxIR ( x là tên timer) set lên 1 có đúng ko
Để tạo trễ bằng timer ko dùng ngắt
void delay(unsigned int t) {
while (T0TC |= t); // đợi đến khi TC = t
T0TC = 0; // reset TC
}Phạm Minh Tuấn
(+84) 982006467
Comment
-
Minh chay ARM LPC 2138 trong Protues nhung sau nhap file *.hex tu keil c 4 lai ko duoc ah.Co ban nao chay mo phong trong Proteus ko vay.
Comment
-
Nguyên văn bởi qkhanh Xem bài viếtem cũng nghĩ là A =const thì chương trình biên dịch sẽ tự tính.bác cho em hỏi luôn là khai báo void function(unsigned int *A) và void function(unsigned int A) khác nhau như thế nào .và khi nào thì dùng void function(unsigned int *A)
void function (unsigned int A) :
Hàm không có giá trị trả về, tham số truyền vào là biến kiểu interger không dấu, tham số này thuộc kiểu tham trị, tức là mọi sự biến đổi của A trong thân hàm có thể thực hiện, tuy nhiên khi thoát ra khỏi hàm thì giá trị biến truyền vào không thay đổi.
void function (unsigned int *A):
Hàm không có giá trị trả về, tham số truyền vào là con trỏ kiểu int không dấu, tham số truyền vào thuộc kiểu tham biến, mọi sự biến đổi của biến này trong thân hàm làm ảnh hưởng đến giá trị của biến truyền vào.
Như vậy ta đã hiểu được cách sử dụng của hai dạng trên, đơn cử cho ví dụ trong hai trường hợp trên.
Kết quả ta được B = 0Code:#include <stdio.h> void function (unsigned int A) { A = A +1; } int main (int argc, char [] *argv) { unsigned int B = 0; function (B); /* Goi ham tai day */ printf ("B=%d\r\n", B); return 0; }
Trường hợp thứ 2:
Kết quả B = 1Code:#include <stdio.h> void function (unsigned int *A) { *A = *A +1; } int main (int argc, char [] *argv) { unsigned int B = 0; function (&B); /* Goi ham tai day */ printf ("B=%d\r\n", B); return 0; }
Xong rồi đấy
Comment
-
cảm ơn các bác rất nhiều em đã hiểu rồi . nhưng theo em thì vấn đề tạo trễ timer như bác mgdaubo nói thì cần chú ý là để thanh ghi PR(chia tẫn số timer) phải lớn hơn thời gian thực hiện lệnh nếu không thì có thể sẽ sai. lệnh rất đơn giản như vậy mà em không nghĩ ra
còn vấn đề này nữa không biết các bác có đồng ý với các câu trả lời trước đó không.đây là vấn đề em rất quan tâm vì đôi khi không hiểu rõ nó sẽ làm ảnh hưởng đến tốc độ thực hiện lệnh của VDK hoặc là làm giảm đi tính linh hoạt trong vấn đề tạo các hàm trong chương trình
Nguyên văn bởi qkhanh Xem bài viếtcác bác cho em hỏi trong dòng lệnh ví dụ như sau :
void OUTPORT0(unsigned int A)
{
unsigned long temp;
temp |= 1<<(A+1) ;
................
}
thì việc tính 1<<(A+1) được thực hiện trong chương trình biên dịch hay trong VDK
tức là nó có làm mất thời gian của VDK ko
Comment
-
Nếu A là hằng số thì trình biên dịch sẽ tính 1 lần và gán luôn cho biết temp.Nguyên văn bởi qkhanh Xem bài viếtcảm ơn các bác rất nhiều em đã hiểu rồi . nhưng theo em thì vấn đề tạo trễ timer như bác mgdaubo nói thì cần chú ý là để thanh ghi PR(chia tẫn số timer) phải lớn hơn thời gian thực hiện lệnh nếu không thì có thể sẽ sai. lệnh rất đơn giản như vậy mà em không nghĩ ra
còn vấn đề này nữa không biết các bác có đồng ý với các câu trả lời trước đó không.đây là vấn đề em rất quan tâm vì đôi khi không hiểu rõ nó sẽ làm ảnh hưởng đến tốc độ thực hiện lệnh của VDK hoặc là làm giảm đi tính linh hoạt trong vấn đề tạo các hàm trong chương trình
Trong trường hợp này tham số gán vào là biến, vì thế VĐK sẽ mất thời gian để thực hiện câu lệnh này.
Comment
-
Cái này không đáng phải hỏi, thử tìm hiểu và làm thử xem.Nguyên văn bởi qkhanh Xem bài viếtvậy có cách nào viết hàm gửi một giá trị bất kỳ ra một cổng được không?
Comment
-
Vấn đề quan trọng là thủ thuật viết cho ngôn ngữ C, muốn tốn ít thời gian thì dùng macro, nhưng bù lại nó tốn code, và ngược nếu muốn thu gọn code thì dùng hàm và không dùng macro.Nguyên văn bởi qkhanh Xem bài viếtviết bình thường thì em viết nhiều rồi.bác nói câu đâu lòng quá.vấn đề là viết tổng quát mà không ảnh hưởng nhiều đến tốc độ tính toán của VDK.VỚI AVR hay PIC thì không khó khăn lắm nhưng với ARM thì em thấy hơi khó
Riêng cho ARM của NXP thì, đây là 1 cách xuất giá trị ra 1 port (32 bit).
Mỗi lần xuất giá trị ra port mà phải ghi hai dòng trên thì mệt quá, vì thế người ta mới nghĩ đến macro, trình biên dịch sẽ lấy macro này chèn vào chỗ mình gọi macro.Code:GPIO_IOCLR = 0xFFFFFFFF; GPIO_IOSET = value;
Vậy đó.Code:#define OUT_PORT(value) \ GPIO_IOCLR = 0xFFFFFFFF; \ GPIO_IOSET = (value)
Comment
dự án của bạn Tra theo mã, xem datasheet và đặt hàng trực tuyến. MicrochipROHMEpsonTaejin
Đặt hàng & tư vấn
Hà Nội024.3640 8561
TP.HCM028.3811 9870
Quét mã hoặc bấm để chat Zalo với R&PChat Zalo
Quét mã hoặc bấm để chat Zalo với R&PChat Zalo
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm bạn thân quen cũ.bởi nhathung1101Còn sống không lão??? Mất một thời gian chữa bệnh nên quên hỏi thăm.......
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 03:09 -
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi nhathung1101Thời buổi năng lượng xanh, nhất là xanh cả mặt... Thì Điện mặt giời, điện gió, sẽ lên ngôi.
Nếu không nắm bắt được cái cơ bản đó thì đi làm coder à? Mà coder giờ thất nghiệp cả lũ vì AI rồi!!!









...
-
Channel: Điện tử công suất
Hôm qua, 03:03 -
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi quangdonguehChà, lâu lắm rồi nhưng diễn đàn vẫn còn những chủ đề cốt lõi của điện tử công suất...-
Channel: Điện tử công suất
24-10-2026, 07:53 -
-
bởi bqvietNếu muốn tăng công suất cần tăng con chip và tăng biến áp lên lớn hơn. Thiết kế ban đầu dùng TNY25x và biến áp EE16 hoặc EE13. Tăng con chip lên TNY268 vẫn mạch nguyên lý đó và biến áp lên EE19 sẽ nâng công suất ra thêm nhiều. Tăng tối đa...-
Channel: Điện tử công suất
24-10-2026, 02:14 -
-
bởi Nexus 6PMạch này chỉ chạy cho LED 10W trở xuống, còn muốn chạy Led công suất cao thì sao bác thớt ơi?-
Channel: Điện tử công suất
22-10-2026, 14:33 -
-
bởi Nexus 6PMạch này chỉ chạy cho LED 10W trở xuống, còn muốn chạy Led công suất cao thì sao bác thớt ơi?-
Channel: Điện tử công suất
22-10-2026, 10:49 -
-
Trả lời cho Tìm VR 5 chânbởi dinhthuong80Cảm ơn bác bqviet . Nhưng hình như các VR 5 chân của linhkienchatluong là loại có 2 chân là công tắc đóng mở. Thấy trên Shopee có chỗ bán linh kiện đàn Organ, mà không biết đúng loại không, với lại sao ... mắc dữ dội luôn ấy!!!
...-
Channel: Hướng dẫn tìm thông tin linh kiện
19-10-2026, 11:30 -
-
Trả lời cho Tìm VR 5 chânbởi bqvietTrang sản phẩm này có loại 5 chân và 8 chân
https://linhkienchatluong.vn/chiet-a...doi_s1595.aspx
Ngoài ra một trang cùng cấp với nó có loại 6 chân nữa, chắc đủ cho người muốn tìm....-
Channel: Hướng dẫn tìm thông tin linh kiện
17-10-2026, 17:19 -
-
bởi dinhthuong80Chào cả nhà, chúc cuối tuần vui vẻ!
Hôm nay mình lên đây nhờ ai biết chỉ dùm biến trở 5 chân này tên gọi là gì, có thể mua ở đâu vậy? Xin cám ơn nhiều! ...-
Channel: Hướng dẫn tìm thông tin linh kiện
-
Comment