diff options
Diffstat (limited to '02-usart/src/core/usart.c')
-rw-r--r-- | 02-usart/src/core/usart.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/02-usart/src/core/usart.c b/02-usart/src/core/usart.c index dc15e57..19d982e 100644 --- a/02-usart/src/core/usart.c +++ b/02-usart/src/core/usart.c @@ -5,12 +5,12 @@ void set_usart1_clock_src(__IO rcc_t* rcc, usart_clk_src_t usart_clk_src) { - rcc->ccip_r = rcc->ccip_r & (~0x03) | usart_clk_src; + rcc->ccip_r = (rcc->ccip_r & (~0x03)) | usart_clk_src; } void set_usart2_clock_src(__IO rcc_t* rcc, usart_clk_src_t usart_clk_src) { - rcc->ccip_r = rcc->ccip_r & ~(0x03 << 2) | (usart_clk_src << 2); + rcc->ccip_r = (rcc->ccip_r & ~(0x03 << 2)) | (usart_clk_src << 2); } void set_usart2_clock_enabled(__IO rcc_t* rcc, bool enable) @@ -41,8 +41,6 @@ void usart_set_parity(__IO usart_t* usart, usart_parity_t parity) void usart_set_enabled(__IO usart_t* usart, usart_enable_t enabled) { - uint32_t c_r1 = usart->c_r1; - if (!enabled) { regset(usart->c_r1, usart_ue, 0); } else { @@ -104,6 +102,7 @@ void usart_printf(__IO usart_t* usart, const char* fmt, ...) va_list l; union { void* ptr; + char* str; int i; } b; char buf[128]; @@ -130,6 +129,9 @@ void usart_printf(__IO usart_t* usart, const char* fmt, ...) decimalify(b.i, buf); usart_transmit_str_sync(usart, buf); break; + case 's': + b.str = va_arg(l, char*); + usart_transmit_str_sync(usart, b.str); } ++ fmt; } else { |