10.09.2011, 08:50
|
#711
|
Прописка
Регистрация: 10.08.2010
Сообщений: 113
Сказал спасибо: 30
Сказали Спасибо 43 раз(а) в 26 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
andries5, залил сюда http://www.onlinedisk.ru/file/729852/
размер 60.4Мб,
Сообщение от kittec
|
При запуске COMODO ругается на трояны
|
Каспер вирусов не находит.
|
|
|
Сказали "Спасибо" avs2009
|
|
|
10.09.2011, 10:42
|
#712
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да, 15 дневный триал - большое зло. Но попробую поставить и посмотреть.
И вот еще несколько вопросов относительно GPIO:
1. В мануале(RM0041) написано что в режиме выхода пин может работать с максимальной скоростью 2,10 или 50 МГц. Конечно 50Мгц - явный перебор т.к. value line работает всего до 24Мгц. Но непонятно следующее: для чего вобще это сделано, как меняются физические свойства пина при изменении скорости(понятно что если дать 10Мгц и настроить на 2 то может не заработать), да и есть ли какие-нибудь критерии и рекомендации по выбору скорости в различных случаях. Типа для уменьшения энергопотребления меньше скорость или не заморачиваться и всегда ставить 50?
2. Регистр APB2ENR разрешает тактирование портов GPIO. Нужно ли для обращения к регистру настройки GPIOx_CRH/CRL включать тактирование соответствующего порта? Если я сконфигурировал CRH/CRL, то могу ли я потом снять с порта тактирование, не сбросит ли это его конфигурацию?
|
|
|
|
11.09.2011, 09:05
|
#713
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Всетаки сделал свой велосипед, точнее мастер конфигурации порта. Вроде все работает, но пока полностю не протестировал.
ЗЫ. перед использованием не поленитесь глянуть в ридми.
Последний раз редактировалось uk8amk; 13.09.2011 в 10:07.
|
|
|
Эти 4 пользователя(ей) сказали Спасибо uk8amk за это сообщение:
|
|
|
11.09.2011, 09:10
|
#714
|
Гражданин KAZUS.RU
Регистрация: 25.11.2009
Сообщений: 609
Сказал спасибо: 37
Сказали Спасибо 140 раз(а) в 72 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
uk8amk, Чуть голова не отломилась ![Весело](images/smilies/icon_laugh.gif)
Я бы делал повернув на 90градусов. читабельней было бы.
|
|
|
|
11.09.2011, 10:11
|
#715
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Оно конечно так, просто в референс-мануале в такой манере биты расписаны, да и мне как-то удобнее если нумерация по горизонтали. Но пожелания учтем в следующих выпусках(если они будут).
|
|
|
|
11.09.2011, 12:13
|
#716
|
Прописка
Регистрация: 10.09.2010
Сообщений: 113
Сказал спасибо: 31
Сказали Спасибо 27 раз(а) в 27 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Может быть в буфер обмена копировать сразу в формате: 0x44444444 ?
|
|
|
Сказали "Спасибо" dadigor
|
|
|
12.09.2011, 12:26
|
#717
|
Частый гость
Регистрация: 18.01.2011
Сообщений: 21
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучаем STM32 Cortex M3
Спасибо всем откликнувшимся. Проблема моя была в отладчике.
Обновил кейл - работает ацп, запускается дма, пишет значения в буфер,выкидывает в прерывание. Возникла другая проблема. ДМА почему-то пишет значения первого и второго каналов не в одни и те же ячейки массива, а вроде бы подряд в большом массиве, но как ни попадя в итоге, то есть могут быть значения в ячейках- [канал 1, канал 2, канал 1..] а могут быть [канал 2, канал 1,канал 2...] и как при этом обрабатывать полученные значения становится не ясно, ибо непонятно где-что.
Последний раз редактировалось ^smbd^; 13.09.2011 в 06:44.
|
|
|
|
12.09.2011, 21:12
|
#718
|
Вид на жительство
Регистрация: 21.11.2009
Сообщений: 342
Сказал спасибо: 4
Сказали Спасибо 149 раз(а) в 66 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Как узнать точное количество тактов на команду ? Есть следующая последовательность:
Код:
|
*abuf++ = GPIOC-›IDR;
8000180: 6891 ldr r1, [r2, #8]
8000182: f843 1c28 str.w r1, [r3, #-40]
*abuf++ = GPIOC-›IDR;
8000186: 6891 ldr r1, [r2, #8]
8000188: f843 1c24 str.w r1, [r3, #-36]
*abuf++ = GPIOC-›IDR;
800018c: 6891 ldr r1, [r2, #8]
800018e: f843 1c20 str.w r1, [r3, #-32]
...
и т.д. |
в разных источниках разные данные 1 или 2 такта на команду. В документации на Cortex-M3 есть упоминание что ldr может группироваться сo следующими ldr/str и выполняться за 0 тактов.
Последний раз редактировалось qwerky; 12.09.2011 в 21:15.
|
|
|
|
13.09.2011, 10:09
|
#719
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от dadigor
|
Может быть в буфер обмена копировать сразу в формате: 0x44444444 ?
|
Ага, уже сам наступил на эти грабли ![Улыбка](images/smilies/icon_smile.gif) Полдня не мог понять, почему порт работает не так.
Пофиксил, обновил выложенный архив.
|
|
|
|
13.09.2011, 14:32
|
#720
|
Временная регистрация
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Доброго всем времени суток!
Надеюсь хоть Вы мне сможете помочь.
Имеется отладочная плата STM32L-Discovery с STM32L152RB на борту. Пишу в Keil uVision 4.21.0.
Пытаюсь разобраться в работе DMA (ака ПДП). Для этого пытаюсь гонять данные из флеш напрямую в Таймер.
Код:
|
#include ‹stm32l1xx.h›
#include ‹stm32l1xx_gpio.h›
#include ‹stm32l1xx_rcc.h›
#include ‹stm32l1xx_tim.h›
#include ‹stm32l1xx_dma.h›
const uint32_t dma_buffer[6] = { 20, 30, 40, 50, 60, 70 };
void mcu_dma_channel1_init(void)
{
DMA_InitTypeDef DMA_Config;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
DMA_DeInit(DMA1_Channel1);
DMA_Config.DMA_PeripheralBaseAddr = (uint32_t)&TIM4-›CCR1;
DMA_Config.DMA_MemoryBaseAddr = (uint32_t)&dma_buffer;
DMA_Config.DMA_DIR = DMA_DIR_PeripheralDST;
DMA_Config.DMA_BufferSize = 6;
DMA_Config.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_Config.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_Config.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
DMA_Config.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
DMA_Config.DMA_Mode = DMA_Mode_Circular;
DMA_Config.DMA_Priority = DMA_Priority_High;
DMA_Config.DMA_M2M = DMA_M2M_Enable;
DMA_Init(DMA1_Channel1, &DMA_Config);
DMA_Cmd(DMA1_Channel1, ENABLE);
}
void mcu_tim4_init(void)
{
TIM_TimeBaseInitTypeDef TIM_BaseConfig;
TIM_OCInitTypeDef TIM_OCConfig;
GPIO_InitTypeDef GPIO_Config;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOBEN, ENABLE);
GPIO_Config.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Config.GPIO_Mode = GPIO_Mode_AF;
GPIO_Config.GPIO_OType = GPIO_OType_PP;
GPIO_Config.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_Init(GPIOB, &GPIO_Config);
GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_TIM 4);
GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_TIM 4);
TIM_BaseConfig.TIM_Prescaler = (uint16_t) (SystemCoreClock / 4800000) - 1;
TIM_BaseConfig.TIM_Period = 149;
TIM_BaseConfig.TIM_ClockDivision = 0;
TIM_BaseConfig.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_BaseConfig);
/* Channel1 Configuration in PWM mode */
TIM_OCConfig.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCConfig.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCConfig.TIM_Pulse = 2;
TIM_OC1Init(TIM4, &TIM_OCConfig);
TIM_OCConfig.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCConfig.TIM_Pulse = 29;
TIM_OCConfig.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OC2Init(TIM4, &TIM_OCConfig);
/* Enable TIM2 DMA interface */
TIM_DMACmd(TIM4, TIM_DMA_CC1, ENABLE);
TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM4, ENABLE);
TIM_Cmd(TIM4, ENABLE);
}
int main(void)
{
mcu_tim4_init();
mcu_dma_channel1_init();
while (1)
{
}
} |
Трабла вот в чем: Когда гоняю в Кейловском отладчике, данные в таймер загоняются (даже светик от этого яркость меняет), но загоняются практически в случайном порядке.
Когда запускаю в "свободный полет" и сажусь на ножку осциком, то вижу ШИМ с постоянной скважностью, т.е. регистр таймера не меняется.
Помогите разобраться в чем косяк, а то уже все идеи иссякли.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:28.
|
|