40 lines
778 B
C
40 lines
778 B
C
|
|
#include "utils.h"
|
||
|
|
#include "mystd.h"
|
||
|
|
|
||
|
|
// this just burns cycles.
|
||
|
|
// the volatile is important, it means that the cpu can't optimize any
|
||
|
|
// read/writes for the value
|
||
|
|
static inline void spin_loop(volatile uint16_t counts) {
|
||
|
|
while (counts)
|
||
|
|
counts--;
|
||
|
|
}
|
||
|
|
|
||
|
|
void delay_ms(uint16_t ms) {
|
||
|
|
while (ms) {
|
||
|
|
// this value was taken using a delay of 500ms, and just recording the led
|
||
|
|
// blinking. it seems to be high enough such that each loop of delay_loop
|
||
|
|
// takes 1ms :D
|
||
|
|
spin_loop((F_CPU) / 5000);
|
||
|
|
ms--;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void ft_bzero(void* data, uint16_t size) {
|
||
|
|
char* d = data;
|
||
|
|
while (size) {
|
||
|
|
*d = 0;
|
||
|
|
d++;
|
||
|
|
size--;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
uint8_t ft_stridx(const char* str, char chr) {
|
||
|
|
if (!str)
|
||
|
|
return -1;
|
||
|
|
for (uint8_t i = 0; str[i]; i++) {
|
||
|
|
if (str[i] == chr)
|
||
|
|
return i;
|
||
|
|
}
|
||
|
|
return -1;
|
||
|
|
}
|