Добавлено API для UART и TMR

This commit is contained in:
2025-12-26 18:43:40 +03:00
parent c6e1dc049f
commit 8e350e6a91
22 changed files with 4359 additions and 1854 deletions

View File

@@ -1,53 +1,74 @@
/*==============================================================================
* Шаблон проекта для К1921ВК035 с использованием бибилотеки PLIB035
*------------------------------------------------------------------------------
* НИИЭТ, Богдан Колбов <kolbov@niiet.ru>
* ЦНИИ СЭТ, Разваляев Алексей <wot890089@mail.ru>
*==============================================================================
* ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО
* ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ ГАРАНТИИ ТОВАРНОЙ
* ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ
* НАРУШЕНИЙ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ. ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
* ПРЕДНАЗНАЧЕНО ДЛЯ ОЗНАКОМИТЕЛЬНЫХ ЦЕЛЕЙ И НАПРАВЛЕНО ТОЛЬКО НА
* ПРЕДОСТАВЛЕНИЕ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ О ПРОДУКТЕ, С ЦЕЛЬЮ СОХРАНИТЬ ВРЕМЯ
* ПОТРЕБИТЕЛЮ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ
* ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, ЗА ПРЯМОЙ ИЛИ КОСВЕННЫЙ УЩЕРБ, ИЛИ
* ПО ИНЫМ ТРЕБОВАНИЯМ, ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
* ИЛИ ИНЫХ ДЕЙСТВИЙ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
*
* 2018 АО "НИИЭТ"
* Конфигурация портов настраивается в gpio.h
* ЦНИИ СЭТ
*==============================================================================
*/
//-- Includes ------------------------------------------------------------------
#include "main.h"
#include "rcu.h"
#include "gpio.h"
void restart_receive(void);
void heartbit(void);
//-- Defines -------------------------------------------------------------------
uint8_t rxbuff[10] = {0};
//-- Peripheral init functions -------------------------------------------------
void periph_init()
{
SystemCoreClockUpdate();
sysclk_init();
uart_init_first();
tmr_init_first();
gpio_init();
#ifdef RETARGET
retarget_init();
#endif
printf("\nAll peripherals inited, SYSCLK = %3d MHz\n", (int)(SystemCoreClock / 1E6));
uart_set_callback(&huart1, UART_Callback_Rx, &restart_receive);
uart_start(&huart1, UART_FIFOLevel_1_8, UART_FIFOLevel_1_8);
tmr_set_callback(&htmr2, 0, &heartbit);
tmr_start(&htmr0);
tmr_start(&htmr1);
tmr_start(&htmr2);
}
//-- Main ----------------------------------------------------------------------
int main()
{
periph_init();
uint8_t cnt;
uart_receive_it(&huart1, rxbuff, sizeof(rxbuff));
uint32_t prev_tick;
tmr_delay_start(&htmr0, &prev_tick);
while (1) {
if(tmr_delay_done(&htmr0, 1000000, &prev_tick))
{
tmr_delay_start(&htmr0, &prev_tick);
GPIO_ToggleBits(GPIOA, GPIO_Pin_8);
}
tmr_delay(&htmr0, 100000);
GPIO_ToggleBits(GPIOA, GPIO_Pin_7);
// uart_transmit_it(&huart1, (uint8_t*)"Hello World: ", sizeof("Hello World: ")-1);
// uart_transmit_it(&huart1, (uint8_t*)"delay 500\r\n", sizeof("delay 500\r\n")-1);
};
//return 0;
}
void restart_receive(void)
{
uart_receive_it(&huart1, rxbuff, sizeof(rxbuff));
uart_transmit_it(&huart1, rxbuff, sizeof(rxbuff));
}
void heartbit(void)
{
uart_transmit(&huart1, (uint8_t *)"\r\nTick 1 sec\r\n", sizeof("\r\nTick 1 sec\r\n")-1, 1000);
}
//-- Assert --------------------------------------------------------------------
void Error_Handler(void)