Пт окт 13, 2017 11:59:55
Пт окт 13, 2017 13:20:19
Вс окт 15, 2017 00:16:08
//Init GPIOB 10 & 11
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
GPIO_Init(GPIOB, &GPIO_InitStructure);
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
//Configure EXTI Line130
EXTI_InitStructure.EXTI_Line = EXTI_Line10;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
//Enable and set EXTI15_10 Interrupt
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_EnableIRQ(EXTI15_10_IRQn);
void EXTI15_10_IRQHandler(void)
{
addSym('!', BINARY(00111111), BINARY(00000000));
}
Вс окт 15, 2017 09:14:12
Чт ноя 02, 2017 10:11:53
Пт ноя 03, 2017 18:22:58
Чт ноя 16, 2017 21:13:55
main.c(29): error: #268: declaration may not appear after executable statement in block
GPIO_InitTypeDef gpio;
main.c(45): error: #268: declaration may not appear after executable statement in block
TIM_TimeBaseInitTypeDef base_timer;
#include <stm32f10x.h>
#include <stm32f10x_gpio.h>
#include <stm32f10x_rcc.h>
/* В этом файле - всё для работы с таймерами */
#include <stm32f10x_tim.h>
/* В этом - для работы с NVIC */
#include <misc.h>
enum { BLUE_LED = GPIO_Pin_8, GREEN_LED = GPIO_Pin_9 };
void init_leds();
void init_timer();
int main()
{
init_leds();
GPIO_SetBits(GPIOC, BLUE_LED);
GPIO_ResetBits(GPIOC, GREEN_LED);
init_timer();
do __NOP(); while (1);
}
void init_leds()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef gpio;
GPIO_StructInit(&gpio);
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
gpio.GPIO_Pin = BLUE_LED | GREEN_LED;
GPIO_Init(GPIOC, &gpio);
}
void init_timer()
{
/* Не забываем затактировать таймер */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
/* Инициализируем базовый таймер: делитель 24000, период 500 мс.
* Другие параметры структуры TIM_TimeBaseInitTypeDef
* не имеют смысла для базовых таймеров.
*/
TIM_TimeBaseInitTypeDef base_timer;
TIM_TimeBaseStructInit(&base_timer);
/* Делитель учитывается как TIM_Prescaler + 1, поэтому отнимаем 1 */
base_timer.TIM_Prescaler = 24000 - 1;
base_timer.TIM_Period = 500;
TIM_TimeBaseInit(TIM6, &base_timer);
/* Разрешаем прерывание по обновлению (в данном случае -
* по переполнению) счётчика таймера TIM6.
*/
TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);
/* Включаем таймер */
TIM_Cmd(TIM6, ENABLE);
/* Разрешаем обработку прерывания по переполнению счётчика
* таймера TIM6. Так получилось, что это же прерывание
* отвечает и за опустошение ЦАП.
*/
NVIC_EnableIRQ(TIM6_DAC_IRQn);
}
void TIM6_DAC_IRQHandler()
{
/* Так как этот обработчик вызывается и для ЦАП, нужно проверять,
* произошло ли прерывание по переполнению счётчика таймера TIM6.
*/
if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
{
/* Очищаем бит обрабатываемого прерывания */
TIM_ClearITPendingBit(TIM6, TIM_IT_Update);
/* Инвертируем состояние светодиодов */
GPIO_Write(GPIOC, GPIO_ReadOutputData(GPIOC) ^ (BLUE_LED | GREEN_LED));
}
}
Чт ноя 16, 2017 21:24:44
Чт ноя 16, 2017 21:29:49
.\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_ClearITPendingBit (referred from main.o).
.\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_Cmd (referred from main.o).
.\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_GetITStatus (referred from main.o).
.\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_ITConfig (referred from main.o).
.\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_TimeBaseInit (referred from main.o).
.\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_TimeBaseStructInit (referred from main.o).
Чт ноя 16, 2017 21:56:55
Пт ноя 17, 2017 10:50:32
Пн ноя 20, 2017 10:57:01
Пт ноя 24, 2017 01:30:44
Вс ноя 26, 2017 23:14:44
// Функция для реализации задержки
void MT_Delay(uint32_t us)
{
volatile uint32_t i;
RCC_ClocksTypeDef rcc;
RCC_GetClocksFreq (&rcc);
i = (rcc.HCLK_Frequency/10000000)*us;
for (; i != 0; i—);
}
/* Peripheral Control functions ************************************************/
void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv);
void HAL_RCC_EnableCSS(void);
void HAL_RCC_DisableCSS(void);
uint32_t HAL_RCC_GetSysClockFreq(void);
uint32_t HAL_RCC_GetHCLKFreq(void);
uint32_t HAL_RCC_GetPCLK1Freq(void);
uint32_t HAL_RCC_GetPCLK2Freq(void);
void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);
void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency);
/** @defgroup RCC_System_Clock_Type System Clock Type
* @{
*/
#define RCC_CLOCKTYPE_SYSCLK 0x00000001U /*!< SYSCLK to configure */
#define RCC_CLOCKTYPE_HCLK 0x00000002U /*!< HCLK to configure */
#define RCC_CLOCKTYPE_PCLK1 0x00000004U /*!< PCLK1 to configure */
#define RCC_CLOCKTYPE_PCLK2 0x00000008U /*!< PCLK2 to configure */
/**
* @}
*/
/** @defgroup RCC_System_Clock_Source System Clock Source
* @{
*/
#define RCC_SYSCLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selected as system clock */
#define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selected as system clock */
#define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_PLL /*!< PLL selected as system clock */
Пн ноя 27, 2017 00:53:51
Пн ноя 27, 2017 12:32:49
Пн ноя 27, 2017 13:14:06
void MT_Delay(uint32_t us)
{
volatile uint32_t i;
i = (SystemCoreClock/10000000)*us;
for (; i != 0; i—);
}
void MT_Delay(uint32_t us)
{
us = (SystemCoreClock / 10000000)*us;
while (us--) ;
}
Пн ноя 27, 2017 16:56:51
Ср ноя 29, 2017 11:57:34
uint8_t __CLZ_MY(uint32_t __count)
{
asm volatile ("clz r0, r0");
}
/* Architecture v5T, CLZ is also available in Thumb mode for Thumb2 cores */
__ATTRIBUTES unsigned char __CLZ( unsigned long );
Ср ноя 29, 2017 12:14:41