Ср янв 15, 2020 17:05:33
Ср янв 15, 2020 17:38:24
Ср янв 15, 2020 18:42:59
Сб фев 01, 2020 23:57:16
Вс фев 02, 2020 00:12:00
Вс фев 02, 2020 00:29:10
GPIO_Set_Pin_Mode(&GPIOA_BASE, _GPIO_PIN_0, _GPIO_CFG_MODE_OUTPUT | _GPIO_CFG_PULL_UP);
RCC_APB2ENRbits.IOPAEN = 1 ; // Enable PORTA clock.
GPIOA_CRHbits.CNF12 = 0b00 ; // PA12 as Push-Pull.
GPIOA_CRHbits.MODE12 = 0b10 ; // Output mode, max speed 2 MHz.
Вс фев 02, 2020 01:05:12
GPIO_Set_Pin_Mode(&GPIOA_BASE, _GPIO_PIN_0, _GPIO_CFG_MODE_OUTPUT | _GPIO_CFG_PULL_UP);
GPIOA_CRHbits.CNF12 = 0b00;
GPIOA_CRHbits.MODE12 = 0b10;
Вс фев 02, 2020 03:46:52
Вс фев 02, 2020 04:26:58
Вс фев 02, 2020 05:22:45
Вс фев 02, 2020 13:24:11
В MikroC не пишу но из кода сразу понятно что настраивается GPIOA.0 на выход с подтягивающим резистором к плюсу.Lum1noFor писал(а):Вот пример команды инициализации ноги порта из MikroC:
Знаете что это специфический для MikroC код? И он не работает в других IDE.Lum1noFor писал(а):Например, CMSIS и HAL сдохнут, введут что-то новое - и что, мне заново учить бред, как здесь говорилось ранее, индусов? В моем же случае я просто лезу в референс мануал и у меня сразу же в голове всплывает такой код:
Если перестанут поддерживать MikroC ваш код придется полностью переписать, т. к. как уже писал в MikroC нестандартная работа с регистрами.Lum1noFor писал(а):И это НИКОГДА не поменяется, пока выпускают данные МК.
Вс фев 02, 2020 14:58:42
VladislavS писал(а):А если вы ещё и одновременно с разными типами микроконтроллеров работаете?
Вс фев 02, 2020 21:48:21
Знаете что это специфический для MikroC код? И он не работает в других IDE
Если перестанут поддерживать MikroC ваш код придется полностью переписать
RCC_APB2ENRbits.IOPAEN = 1
RCC->APB2EN
Зачем вы вообще выбрали MikroC
В ней к примеру довольно легко настроить отладку в памяти или подключение к работающему МК. Как это сделать MikroC я так и не разобрался. На нашел настроек линкера и отладчика.
Если вы программируете другие контроллеры, то что может быть не понятного в рефмане от производителя?
Вс фев 02, 2020 22:59:43
Вс фев 02, 2020 23:38:08
Вообще-то наLum1noFor писал(а):исправить на:
RCC->APB2EN |=RCC_APB2ENR_IOPAEN;
С MikroC точно тоже самое. Формат работы с регистрами нестандартный.Lum1noFor писал(а):А если бы я использовал библиотеки, а не регистры, то пришлось бы переписывать вообще все.
Но ведь в нем вы не можете компилировать для STM32.Lum1noFor писал(а):Не совсем. Такой же формат кода в MPLAB от Микрочипа
Уже давал ссылку. http://purebasic.mybb.ru/viewtopic.php?id=575Lum1noFor писал(а):Попробовал настроить Eclipse + GCC по совету знакомого - чуть мозг не вывихнул.
ST-Link поддерживает. http://purebasic.mybb.ru/viewtopic.php?id=564#p7232Lum1noFor писал(а):Да, отладчик в микроси бесполезный. Говорят, поддерживает для отладки только JLink от Segger за космические деньги.
Без отладчика сложно согласен.Lum1noFor писал(а):Когда на начальном этапе обучения пытался разобраться с прерываниями, долго думал, почему ничего не работает.
Вот поэтому проще использовать библиотеки.Lum1noFor писал(а):Потому что сам застрял на изучении режима PWM таймера.
#include "stm32f10x_conf.h"
extern uint32_t SystemCoreClock;
int main(void)
{
SystemCoreClockUpdate(); // Узнаем тактовую частоту. Результат в SystemCoreClock.
// Тактирование.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
// Конфигурация выводов.
GPIO_InitTypeDef GPIO;
GPIO.GPIO_Pin = GPIO_Pin_6; // Выход ШИМ.
GPIO.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO);
// Настройка таймера.
TIM_TimeBaseInitTypeDef Tim;
TIM_TimeBaseStructInit(&Tim);
Tim.TIM_Prescaler = SystemCoreClock / 10000 -1; // После предделителя 10 кГц.
Tim.TIM_Period = 10000 / 1 -1; // Частота переполнений 1 Гц.
TIM_TimeBaseInit(TIM3, &Tim); // Инициализация таймера.
// Настройка ШИМ.
TIM_OCInitTypeDef PWM;
TIM_OCStructInit(&PWM);
PWM.TIM_Pulse = Tim.TIM_Period / 2;
PWM.TIM_OCMode = TIM_OCMode_PWM1;
PWM.TIM_OutputState = TIM_OutputState_Enable;
PWM.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &PWM);
TIM_Cmd(TIM3, ENABLE);
while(1)
{
}
}
Пн фев 03, 2020 12:48:16
Пн фев 03, 2020 19:45:50
GPIO_Set_Pin_Mode(&GPIOA_BASE, _GPIO_PIN_0, _GPIO_CFG_MODE_OUTPUT | _GPIO_CFG_PULL_UP);
GPIOA_CRHbits.CNF12 = 0b00;
GPIOA_CRHbits.MODE12 = 0b10;
Пн фев 03, 2020 23:07:19
Пн фев 03, 2020 23:23:04
Что такое auto-reload, preload?
Вт фев 04, 2020 00:06:36
void TIM2_Init() { // TIM2 1us delay. F = 8 MHz.
RCC_APB1ENRbits.TIM2EN = 1 ; // Enable TIM2 clock.
TIM2_CR1bits.CEN = 0 ; // Disable TIM2.
TIM2_CR1bits.DIR_ = 0 ; // Counter used as upcounter.
TIM2_PSC = 0 ; // TIM2 prescaler value is 0.
TIM2_ARR = 7 ; // Set TIM2 period.
TIM2_DIERbits.UIE = 1 ; // Allow interrupt on the update event.
NVIC_IntEnable(IVT_INT_TIM2) ; // Enable TIM2 interrupt.
TIM2_CR1bits.CEN = 1 ; // Start TIM1!
}
void Timer2_interrupt() iv IVT_INT_TIM2 {
//Enter your code here
TIM2_SRbits.UIF = 0 ; // Clear TIM2 interrupt flag.
}