wip
This commit is contained in:
@@ -80,7 +80,7 @@ int main(void) {
|
||||
(void) usart2_init();
|
||||
|
||||
(void) tim4_start();
|
||||
(void) tim4_start();
|
||||
(void) usart2_start();
|
||||
|
||||
uint16_t led = PIN('C', 13); // Blue LED
|
||||
RCC->AHB1ENR |= BIT(PINPORT(led)); // Enable GPIO clock for LED
|
||||
@@ -93,8 +93,7 @@ int main(void) {
|
||||
led_on = !led_on;
|
||||
gpio_write(led, led_on);
|
||||
|
||||
while ((USART2->ISR & USART_ISR_TC) != USART_ISR_TC);
|
||||
USART2->TDR = '#';
|
||||
usart2_write_byte('a');
|
||||
|
||||
counter = TIM4->CNT;
|
||||
}
|
||||
|
||||
12
src/usart.c
12
src/usart.c
@@ -49,9 +49,9 @@ void usart2_init(void) {
|
||||
USART2->CR1 |= USART_CR1_OVER8_8;
|
||||
|
||||
USART2->BRR &= ~(USART_BRR_MANTISSA_MASK << USART_BRR_MANTISSA_BIT);
|
||||
USART2->BRR |= (52 << USART_BRR_MANTISSA_BIT);
|
||||
USART2->BRR |= (0x34 << USART_BRR_MANTISSA_BIT);
|
||||
USART2->BRR &= ~(USART_BRR_FRACTION_MASK << USART_BRR_FRACTION_BIT);
|
||||
USART2->BRR |= (0 << USART_BRR_FRACTION_BIT);
|
||||
USART2->BRR |= (0x0 << USART_BRR_FRACTION_BIT);
|
||||
|
||||
// Enable transmitter and receiver
|
||||
USART2->CR1 |= USART_CR1_TE_ENABLE;
|
||||
@@ -61,3 +61,11 @@ void usart2_init(void) {
|
||||
void usart2_start(void) {
|
||||
USART2->CR1 |= USART_CR1_UE_ENABLE;
|
||||
}
|
||||
|
||||
void usart2_write_byte(char c) {
|
||||
// Send data
|
||||
USART2->DR = c;
|
||||
|
||||
// Wait indefinitely for transmission to be ready for data
|
||||
while ((USART2->SR & USART_SR_TXE_TRANSMITTED) == 0);
|
||||
}
|
||||
|
||||
11
src/usart.h
11
src/usart.h
@@ -16,6 +16,15 @@ struct usart {
|
||||
#define USART2_BASE_ADDR (0x40004400U)
|
||||
#define USART2 ((struct usart *) USART2_BASE_ADDR)
|
||||
|
||||
// SR Register
|
||||
// Transmission data register empty
|
||||
#define USART_SR_TXE_BIT 7
|
||||
#define USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT)
|
||||
|
||||
// Read data register not empty
|
||||
#define USART_SR_RXNE_BIT 5
|
||||
#define USART_SR_RXNE_READY (1 <<USART_SR_RXNE_BIT)
|
||||
|
||||
// CR Register
|
||||
// Oversampling mode
|
||||
#define USART_CR1_OVER8_BIT 15
|
||||
@@ -43,4 +52,6 @@ struct usart {
|
||||
void usart2_init(void);
|
||||
void usart2_start(void);
|
||||
|
||||
void usart2_write_byte(char byte);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user