Vì vậy, chào mừng trở lại, hãy tiếp tục. 1
Vì vậy tôi sẽ tiếp tục 2
bằng cách tạo một chức năng đơn giản ở đây để giúp tôi bật và tắt đèn LED màu xanh đậm. tôi chỉ đi 3
để tạo một API đơn giản, tôi sẽ gọi nó là màu xanh lam, vì vậy hãy bỏ qua màu xanh 4
Và nó cũng có chức năng void void. 5
Về cơ bản tôi chỉ có thể gọi chức năng này để bật đèn led màu xanh 6
và chúng ta hãy có phần đối lập sẽ là màu xanh. 7
Ở đây chúng ta có thể sử dụng toán tử này để bật màu xanh 8
Vì vậy, sau đó hãy đặt các nguyên mẫu ở đầu 9
Và xem, chỉ cần đặt nó ở đây 10
đặt nó ở đây là tốt 11
Vì vậy, bây giờ tôi sẽ chỉ đến đây. 12
Và những gì tôi sẽ làm là tôi sẽ gọi một chức năng mới 13
màu xanh bật hoặc trì hoãn một giây và sau đó tắt màu xanh và sau đó tôi sẽ trì hoãn một giây nữa, phải. 14
Vì vậy, hãy biên dịch và kiểm tra trên bảng của chúng tôi. 15
không có lỗi, không có cảnh báo. 16
Vì vậy, kết nối bảng của bạn và tải xuống và tôi hy vọng đèn LED màu xanh của bạn đang nhấp nháy. 17
Của tôi đang nhấp nháy, chỉ là màu xanh 18
Vì vậy, bây giờ chúng ta hãy đi đến chế độ xem gỡ lỗi và kiểm tra xem mã dành phần lớn thời gian ở đâu. 19
Vì vậy, tôi sẽ bấm vào đây để xem gỡ lỗi 20
nó mở ra 21
Đúng. 22
Vì vậy, trước khi chúng tôi kiểm tra mã, hãy đảm bảo rằng bạn đã có chế độ xem cục bộ của mình, ngăn xếp lõi cộng với chế độ xem cục bộ. 23
ở đây. 24
Nếu bạn không đến để xem ở đây và sau đó chọn cửa sổ ngăn xếp cuộc gọi và sau đó nó sẽ kích hoạt chế độ xem này 25
cho bạn. 26
Vì vậy, những gì sẽ xảy ra là khi tôi nhấn nút này ở đây, chạy, mã sẽ chạy như thể tôi là 27
chạy firmware một cách bình thường. 28
Và khi nó chạy tôi sẽ nhấn nút này khi nó bắt đầu chạy nút này, nút dừng đang diễn ra 29
để được kích hoạt và tôi sẽ nhấn nút này và sau đó nó sẽ dừng lại và sau đó chúng ta sẽ thấy nơi 30
mã dừng lại. 31
Vì vậy, tôi sẽ nhấn nút này và mã đang chạy vì bạn có thể thấy đèn LED màu xanh đang nhấp nháy như được cho là 32
chớp mắt 33
Vì vậy, sau đó tôi sẽ bấm vào đây để dừng lại. 34
Chúng tôi làm gián đoạn mã để chúng tôi có thể tìm thấy nơi chương trình dừng lại. 35
Đúng. Trong ngăn xếp cuộc gọi cộng với người dân địa phương 36
lượt xem. 37
Chúng tôi nhận ra rằng nó đã dừng trong chức năng này, chức năng get tick và chức năng này là một phần của sự chậm trễ 38
mô-đun. 39
Chúng ta có thể tìm thấy điều đó bằng cách nhấp chuột phải vào đây và sẽ hiển thị mã màu. Xem, 40
chúng tôi thấy rằng đó là trong chức năng trì hoãn. 41
Vì vậy, chúng tôi sẽ chạy mã một lần nữa để dừng nó và thấy tôi đang chạy nó, sau đó tôi dừng lại. 42
Và sau đó chúng tôi tìm thấy nó ở cùng một nơi. 43
Nó dành thời gian ở đâu? Trong độ trễ s. Hãy làm điều đó lần thứ ba. Tôi chỉ chạy nó, ngẫu nhiên, tôi dừng nó 44
và sau đó chúng ta vẫn thấy mình trong hàm get tick là hàm trì hoãn. 45
Trong thực tế, mã này dành khoảng 95 phần trăm thời gian cho hàm trì hoãn và chúng ta biết hàm trì hoãn 46
Không lam gi cả. 47
Nó chỉ ăn chu kỳ CPU không làm gì cả. 48
Tôi cũng nên chỉ ra rằng cấu trúc chương trình đơn giản này là cái được gọi là nền / tiền cảnh 49
cấu trúc luồng, nghĩa là có chức năng chính bình thường và ít nhất một thói quen dịch vụ ngắt. 50
Hàm chính được đặt ở phía trước trong khi thường trình dịch vụ ngắt được đặt thành 51
bối cảnh. 52
Trong ví dụ chúng ta vừa viết, tất nhiên chúng ta có chức năng chính và một trình xử lý dịch vụ ngắt 53
trình xử lý systick nhớ trình xử lý ngắt còn được gọi là các thói quen dịch vụ ngắt. 54
Và tôi cũng nên chỉ ra cho bạn rằng có một cuộc tranh luận sôi nổi ngoài kia là nền tảng 55
và đó là tiền cảnh. Trong một số văn bản 56
bạn tìm thấy hàm chính được mô tả là nằm trong nền và các dịch vụ ngắt trên nền trước. 57
Một ví dụ về các văn bản như vậy là hệ điều hành microm hai. Một số bạn có thể quen 58
Với hệ điều hành microm, đây là loại hạt nhân công nghiệp rất phổ biến, loại microm os hai thật 59
tài liệu nhân thời gian mô tả luồng chính là nền trong khi dịch vụ ngắt 60
các thói quen như là tiền cảnh. 61
Tuy nhiên, phần lớn các văn bản thấy nó trực quan hơn khi đề cập đến chủ đề chính là tiền cảnh và 62
dịch vụ ngắt thường xuyên làm nền tảng và trong suốt khóa học này, chúng tôi sẽ đề cập đến 63
luồng chính làm tiền cảnh và thường trình dịch vụ ngắt làm nền. 64
Chúng ta hãy xem sơ đồ dòng của phần sụn đơn giản mà chúng ta vừa viết. Như chúng ta có thể thấy ở đây, nó bắt đầu 65
nó khởi tạo GPIO, nó bật màu xanh và sau đó nó trì hoãn một giây, nó tắt màu xanh 66
sau đó nó trì hoãn một giây và sau đó nó quay trở lại. 67
Nhưng điều quan trọng ở đây là hình chữ nhật ở đây, chúng ta thấy rằng trong hàm độ trễ chúng ta tìm thấy 68
những mũi tên đi ngược lên. Khi thực thi đến đây, nó chờ đợi một sự kiện và nó vẫn còn 69
bị chặn cho đến khi sự kiện xảy ra. 70
Trong trường hợp của ví dụ này, sự kiện đó là thời gian chờ hệ thống. 71
Và hãy nhớ rằng chúng ta trực tiếp đặt khoảng thời gian chờ thông qua đối số chúng ta chuyển sang hàm trì hoãn s. 72
Việc triển khai mà chúng tôi sử dụng gần như hàng ngày trong phần sụn nhúng của chúng tôi là để tạo độ trễ 73
chức năng, nó là những gì được gọi là mã chặn. 74
Và đây là lý do tại sao chương trình dành phần lớn thời gian của nó trong thời gian trễ vì khi đến phần đó 75
bị chặn cho đến khi thời gian chờ xảy ra. 76
Tiếp tục, bây giờ hãy tạo API để giúp chúng tôi chuyển đổi đèn LED màu cam. 77
Vì vậy, những gì tôi sẽ làm là tôi sẽ sao chép những cái chúng tôi có cho màu xanh ở đây như thế này và 78
sau đó tôi sẽ dán nó xuống đây và sau đó ở mọi nơi tôi thấy màu xanh tôi sẽ đổi tên nó thành màu cam, vì vậy tôi sẽ 79
đổi tên này thành màu cam nên mũ thấp hơn. 80
Sau đó, tất nhiên ở đây màu cam 81
sau đó ở đây màu cam 82
và sau đó tất nhiên là màu cam. 83
Vâng, đây là màu xanh, tôi gọi nó là màu xanh do nhầm lẫn. 84
Vì vậy, tôi sẽ sắp xếp lại nó. 85
Có một cái ở đây 86
Hãy để tôi mang cái này lên đó và dọn dẹp nó một chút, đúng không. 87
Có nó được bảo hiểm. 88
Vì vậy, tiếp theo chúng ta hãy đặt các nguyên mẫu của các hàm mới ở đây như thế này 89
Hãy sao chép cái này, sau đó dán. 90
Và sau đó nó trở thành màu cam, 91
điều này trở thành màu cam tất nhiên