- Thuật toán đơn giản dùng để giảm dung lượng bộ nhớ để lưu stringGiả sử ta cần lưu string như thế này: string1 = "ABCDAAB"Dễ thấy, với một ký tự trong string ta cần 1 byte hay 8 bít để biểu diễnVậy string1 sẽ cần 7 byte (7*8 = 56 bít) trong bộ nhớ.Vậy làm thế nào để lưu string này với ít hơn 7 byte?Cách 1:1. Dễ thấy string 1 được biểu diễn bới 4 ký tự: 'A', 'B', 'C', 'D'Bước 1: Lập 1 bảng hằng số để định nghĩa lại các ký tự nàyA là số 1 => A = 00000001B là số 2 => B = 00000010C là số 3 => C = 00000011D là số 4 => D = 00000100Bước 2: Nhìn bảng, ta thấy mỗi ký tự chỉ cần 3 bít để biểu diễnA là số 1 => A = 001B là số 2 => B = 010C là số 3 => C = 011D là số 4 => D = 100Bước 3: Biểu diễn string1 theo bảng hằng số vừa được định nghĩabefore: string1 = A B C D A A Bafter : string1 = 001 010 011 100 001 001 010Vậy rõ ràng, sau khi biến đổi, ta chỉ cần 3*7 = 21 bít (<56 bít) để biểu diễn string1Cách 2:For example, consider a screen containing plain black text on a solid white background. There will be many long runs of white pixels in the blank space, and many short runs of black pixels within the text. Let us take a hypothetical single scan line, with B representing a black pixel and W representing white:WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWWIf we apply the run-length encoding (RLE) data compression algorithm to the above hypothetical scan line, we get the following:12W1B12W3B24W1B14WCách này cũng có ưu điểm và nhược điểm nhất định, tùy từng trường hợp mà áp dụng cho phù hợp
Reference:
To configure Timer1 for a 1 kHz PWM signal with a 20% duty cycle on an STM32H7S3L8 microcontroller, follow these steps: 1. Understand the Timer Parameters PWM Frequency : 1 kHz → Period = 1 ms. Duty Cycle : 20% → ON time = 0.2 ms. The timer’s clock frequency is derived from the APB clock (e.g., TIMCLK). Let’s assume you know the APB clock frequency. The Timer prescaler and auto-reload register (ARR) define the PWM frequency. 2. Compute Timer Parameters Formula: PWM Frequency = Timer Clock (Prescaler + 1) * (ARR + 1) \text{PWM Frequency} = \frac{\text{Timer Clock}}{\text{(Prescaler + 1) * (ARR + 1)}} PWM Frequency = (Prescaler + 1) * (ARR + 1) Timer Clock For 1 kHz PWM: A R R = Timer Clock PWM Frequency ∗ ( Prescaler + 1) − 1 ARR = \frac{\text{Timer Clock}}{\text{PWM Frequency} * (\text{Prescaler + 1)}} - 1 A RR = PWM Frequency ∗ ( Prescaler + 1) Timer Clock −...
Comments
Post a Comment