STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
Подскажите как запустить функцию printf в ИАРе? немогу вывести строчку по UARTу,гденить есть готовая библиотека?
Нашел uartstdio.h ну чето неработает.
И ктонить подсоединял stm32l152 к mmc? а то уже5 дней маюсь с ней, на АВРке дела,на это чот неполучается(
Нашел uartstdio.h ну чето неработает.
И ктонить подсоединял stm32l152 к mmc? а то уже5 дней маюсь с ней, на АВРке дела,на это чот неполучается(
- Реклама
Re: STM32 новичку в ARM что к чему
спящий писал(а):Подскажите как запустить функцию printf в ИАРе? немогу вывести строчку по UARTу,гденить есть готовая библиотека?
Стандартная библиотека все это может. принтф работает на ура.
Если в swo фигарить - то просто галочку соотв. в свойствах проекта. если хочешь в UART - свою функцию __write() напиши и все заработает.
Re: STM32 новичку в ARM что к чему
Какая стандартная библиотека?stdio?swo -это что такое?
Да хочу по UART ,чтобы была путчат,и принтф
Да хочу по UART ,чтобы была путчат,и принтф
Re: STM32 новичку в ARM что к чему
Блин уже мозг вскипает,месяц мучаюсь соединить FATfs и mmc...Инициализация карты получилась с горем пополам)
Чтение получается частично тоесть:
xmit_spi(CMD18); - чтение безперерыва
xmit_spi(0);
xmit_spi(0);
xmit_spi(50);
xmit_spi(0);
xmit_spi(0Xff);
это работает,тоесть читает не сначала флехи.
Сделал как отправка командой - нет(( начинает читать с самого начала.В чем проблемма? Смещение или тип переменной?
{
/* Send command packet */
xmit_spi(cmd); /* Start + Command index */
xmit_spi(arg >> 24); /* Argument[31..24] */
xmit_spi(arg >> 16); /* Argument[23..16] */
xmit_spi(arg >>
; /* Argument[15..8] */
xmit_spi(arg); /* Argument[7..0] */
xmit_spi(0x95);
}
Ктонибудь делал для STM32l152?Скинте функции disk_write и send_cmd
главное send_cmd.
Чтение получается частично тоесть:
xmit_spi(CMD18); - чтение безперерыва
xmit_spi(0);
xmit_spi(0);
xmit_spi(50);
xmit_spi(0);
xmit_spi(0Xff);
это работает,тоесть читает не сначала флехи.
Сделал как отправка командой - нет(( начинает читать с самого начала.В чем проблемма? Смещение или тип переменной?
Спойлер
void send_cmd(CMD18,1024000){
/* Send command packet */
xmit_spi(cmd); /* Start + Command index */
xmit_spi(arg >> 24); /* Argument[31..24] */
xmit_spi(arg >> 16); /* Argument[23..16] */
xmit_spi(arg >>
xmit_spi(arg); /* Argument[7..0] */
xmit_spi(0x95);
}
Ктонибудь делал для STM32l152?Скинте функции disk_write и send_cmd
главное send_cmd.
Re: STM32 новичку в ARM что к чему
Такой вопрос: подаем на перефирию частоту от внутреннего генератора 2,09МГЦ ТИМ6
RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; //врубаем тактирование на прерывание TIM10
TIM6->PSC = 1600; //выбираю частоту
TIM6->ARR = 30000; // до скольки будет считать 559
dlina_impulsa=360;
TIM6->DIER |= TIM_DIER_UIE;// уведомить при достижения
TIM6->CR1 = TIM_CR1_CEN | TIM_CR1_ARPE;
NVIC_SetPriority(TIM6_IRQn, 1);
NVIC_EnableIRQ(TIM6_IRQn);//запрещаем прерывание по таймеру
потом идет настройка УАРТ
RCC->CR |= RCC_CR_HSION; //Включаем тактовый генератор HSI
while(!(RCC_CR_HSIRDY)); //Ждем его стабилизации
RCC->CFGR |= RCC_CFGR_SW_HSI; //Выбираем источником тактовой частоты SYSCLK генератор HSI
RCC->CR &= ~RCC_CR_MSION; //Отключаем генератор MSI.
//GPIO
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //Включаем тактирование порта А
GPIOA->MODER |= GPIO_MODER_MODER9_1; //PA9 - выход AF
GPIOA->OTYPER &= ~GPIO_OTYPER_OT_9; //PA9 - выход push-pull
GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR9); //PA9 - без подтяжки
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; //PA9 - скорость 40 МГц
/*Далее в разряды AFRH9[3:0] регистра альтернативных функций GPIOA_AFRH записываем
значение 0111, тем самым для вывода PA9 задаем значение
альтернативной функции - AF7, что соответствует USART1_TX*/
GPIOA->AFR[1] |= (0x7<<4);
//USART1
RCC->APB2ENR |= RCC_APB2ENR_USART1EN; //Включаем тактирование модуля USART1
USART1->CR1 |= USART_CR1_UE; //Включаем USART1
USART1->CR1 &= ~USART_CR1_M; //Длина слова - 8 бит
USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
USART1->BRR = 0x683; //baud rate 9600 при частоте HSI = 16 МГц
USART1->CR1 |= USART_CR1_TE; //Разрешаем передачу данных
Там настраивается тактирование(красным цветом) на 16 МГЦ,соответственно таймер TIM6 тоже становится на частоте 16МГЦ?
Спойлер
//настройка прерывания по TIM6RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; //врубаем тактирование на прерывание TIM10
TIM6->PSC = 1600; //выбираю частоту
TIM6->ARR = 30000; // до скольки будет считать 559
dlina_impulsa=360;
TIM6->DIER |= TIM_DIER_UIE;// уведомить при достижения
TIM6->CR1 = TIM_CR1_CEN | TIM_CR1_ARPE;
NVIC_SetPriority(TIM6_IRQn, 1);
NVIC_EnableIRQ(TIM6_IRQn);//запрещаем прерывание по таймеру
потом идет настройка УАРТ
Спойлер
//RCCRCC->CR |= RCC_CR_HSION; //Включаем тактовый генератор HSI
while(!(RCC_CR_HSIRDY)); //Ждем его стабилизации
RCC->CFGR |= RCC_CFGR_SW_HSI; //Выбираем источником тактовой частоты SYSCLK генератор HSI
RCC->CR &= ~RCC_CR_MSION; //Отключаем генератор MSI.
//GPIO
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //Включаем тактирование порта А
GPIOA->MODER |= GPIO_MODER_MODER9_1; //PA9 - выход AF
GPIOA->OTYPER &= ~GPIO_OTYPER_OT_9; //PA9 - выход push-pull
GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR9); //PA9 - без подтяжки
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; //PA9 - скорость 40 МГц
/*Далее в разряды AFRH9[3:0] регистра альтернативных функций GPIOA_AFRH записываем
значение 0111, тем самым для вывода PA9 задаем значение
альтернативной функции - AF7, что соответствует USART1_TX*/
GPIOA->AFR[1] |= (0x7<<4);
//USART1
RCC->APB2ENR |= RCC_APB2ENR_USART1EN; //Включаем тактирование модуля USART1
USART1->CR1 |= USART_CR1_UE; //Включаем USART1
USART1->CR1 &= ~USART_CR1_M; //Длина слова - 8 бит
USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
USART1->BRR = 0x683; //baud rate 9600 при частоте HSI = 16 МГц
USART1->CR1 |= USART_CR1_TE; //Разрешаем передачу данных
Там настраивается тактирование(красным цветом) на 16 МГЦ,соответственно таймер TIM6 тоже становится на частоте 16МГЦ?
- Реклама
Re: STM32 новичку в ARM что к чему
Ребят подскажите , купил платку STM32F3DISCOVERY , при первом подключении к компу определяется в системе как ST link , не пойму нужны драйвера на плату или нет.Жалею что купил STM32F3DISCOVERY нужно было брать наверное STM32VLDiscovery на последнюю платку описаний в нете полно , а на первую болт (цена подкупила).К тому же хотел на КОКСЕ начинать , а он не поддерживает еще STM32F303VCT6 , короче лохонулся конкретно.
-
Foks
- Поставщик валерьянки для Кота
- Сообщения: 2108
- Зарегистрирован: Пт авг 29, 2008 16:28:19
- Откуда: Киев
Re: STM32 новичку в ARM что к чему
Эти платы отличаются микроконтроллером, который на них стоит, насколько я понимаю. А программатор там один и тот же. Почему же лохонулись? F3 серия ведь гораздо мощнее чем F1. При наличии хотя-бы зачатков логического мышления сможете применить всю существующую информацию по старой плате к Вашей новой.
Вместо Кокоса советую скачать нормальную среду вроде IAR или Keil.
Вместо Кокоса советую скачать нормальную среду вроде IAR или Keil.
Giggity giggity goo!
Re: STM32 новичку в ARM что к чему
Foks писал(а):Эти платы отличаются микроконтроллером, который на них стоит, насколько я понимаю. А программатор там один и тот же.
Вместо Кокоса советую скачать нормальную среду вроде IAR или Keil.
Я понимаю что платы отличаются подопытными контроллерами и обвесом.Только вот вторая плата при подключению к компу определяется как дисковый накопитель , а моя как ST link.Вот и спрашиваю драйвер нужен?
На счет нормальной среды , чужими строками...
bolek писал(а): Если есть пара лишних лет жизни, и еще лет 5 в перспективе - использования этих МК, то подход правильный. А если нужно быстро решить задачку и переключиться на другую - нет.
Я это к чему , к тому что не у каждого вся жизнь в трении с контроллерами , да и времени не так много почти весь день на работе.К примеру я полнейший дилетант и параллельно изучаю восьми битные контроллеры (на них уже первые программы есть) при чем в среде Фловкод(все скажут фууууу , а для меня хватает , быстро и понятно).У каждого свои цели и высоты в жизни.
-
TripleKill
- Вымогатель припоя
- Сообщения: 671
- Зарегистрирован: Вт июн 29, 2010 12:31:49
Re: STM32 новичку в ARM что к чему
VLDiscovery лишь определяется как накопитель. Для программирования любой STшной борды вам понадобятся дрова на ст-линк.
По этой ссылке в разделе Design Support найдёте и драйвер, и ПО для обновления прошивки ст-линка: http://www.st.com/internet/evalboard/product/251168.jsp.
По этой ссылке в разделе Design Support найдёте и драйвер, и ПО для обновления прошивки ст-линка: http://www.st.com/internet/evalboard/product/251168.jsp.
Re: STM32 новичку в ARM что к чему
TripleKill писал(а):По этой ссылке в разделе Design Support найдёте и драйвер, и ПО для обновления прошивки ст-линка: http://www.st.com/internet/evalboard/product/251168.jsp.
Благодарю вас.А я шукал на сайте по другим именам , спасибо!
Re: STM32 новичку в ARM что к чему
Подскажите или дайте код для STM32l152 код для реализации ШИМа
#include "stm32l1xx_gpio.h"
//Задаем массив значений для синусоиды
uint32_t pwm_arr[]={0,0,6553,13107,19660,26214,32768,39321,45875,52428,58982,65535};
uint8_t m; //Переменная для цикла
//Объявление функции инициализации периферии
void InitPeriph(void);
void delay(void) {
volatile uint32_t i;
for (i=1; i != 0xF000; i++);
}
int main()
{while(1){
for(m;m<11;m++){
TIM2->CCR3=pwm_arr[m];
delay();}
m=0;
}
}
//Функция ининиализации периферии
void InitPeriph()
{
//Настройка порта А
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //Включаем тактирование порта А
GPIOA->MODER |= GPIO_MODER_MODER3_1; //Аналоговый выход линии PA3
GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR3; //Отключаем подтягивающие резисторы
GPIOA->AFR[3] = GPIO_AFRL_AFRL1; //В этой строчке неуверен!!!
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; //скорость 40 МГЦ
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN ; //Включаем тактирование TIM2
TIM2->CCER |= (TIM_CCER_CC1E|TIM_CCER_CC2E|TIM_CCER_CC3E|TIM_CCER_CC4E); //Включаем канал 2 ШИМ
TIM2->CCMR1|=(TIM_CCMR1_OC2M_0| TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2);
TIM2->CCMR2|=(TIM_CCMR2_OC3M_0 | TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 |TIM_CCMR2_OC4M_0 | TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2); // инвертируемый шим
TIM2->CR1 |= TIM_CR1_CEN;//запуск ШИМА
}
Спойлер
#include "stm32l1xx.h"#include "stm32l1xx_gpio.h"
//Задаем массив значений для синусоиды
uint32_t pwm_arr[]={0,0,6553,13107,19660,26214,32768,39321,45875,52428,58982,65535};
uint8_t m; //Переменная для цикла
//Объявление функции инициализации периферии
void InitPeriph(void);
void delay(void) {
volatile uint32_t i;
for (i=1; i != 0xF000; i++);
}
int main()
{while(1){
for(m;m<11;m++){
TIM2->CCR3=pwm_arr[m];
delay();}
m=0;
}
}
//Функция ининиализации периферии
void InitPeriph()
{
//Настройка порта А
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //Включаем тактирование порта А
GPIOA->MODER |= GPIO_MODER_MODER3_1; //Аналоговый выход линии PA3
GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR3; //Отключаем подтягивающие резисторы
GPIOA->AFR[3] = GPIO_AFRL_AFRL1; //В этой строчке неуверен!!!
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; //скорость 40 МГЦ
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN ; //Включаем тактирование TIM2
TIM2->CCER |= (TIM_CCER_CC1E|TIM_CCER_CC2E|TIM_CCER_CC3E|TIM_CCER_CC4E); //Включаем канал 2 ШИМ
TIM2->CCMR1|=(TIM_CCMR1_OC2M_0| TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2);
TIM2->CCMR2|=(TIM_CCMR2_OC3M_0 | TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 |TIM_CCMR2_OC4M_0 | TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2); // инвертируемый шим
TIM2->CR1 |= TIM_CR1_CEN;//запуск ШИМА
}
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Может поможет чем
Там немного подальше есть пример с PWM через DMA.
Там немного подальше есть пример с PWM через DMA.
Re: STM32 новичку в ARM что к чему
Спасибо я уже нашел пример)
А вот подскажите зачем и как нужно использовать ДМА?чет мельком прочитал мол можно обмениваться без участия ядра(незагружать). Просто немогу пример найти в голове для применения,только разве считать большие файлы с ММС. А где еще?)в чем прикол его использования.
А вот подскажите зачем и как нужно использовать ДМА?чет мельком прочитал мол можно обмениваться без участия ядра(незагружать). Просто немогу пример найти в голове для применения,только разве считать большие файлы с ММС. А где еще?)в чем прикол его использования.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Если не можете, то не загружайтесьПросто немогу пример найти в голове
Придёт время и Вы поймёте его прелести.
Re: STM32 новичку в ARM что к чему
ну а вдруг он мне сейчас облегчит задачу, а я незнаю какую)
Re: STM32 новичку в ARM что к чему
Помогите настроить ногу STM32l на альтернативную функцию TIM3 ШИМ PC6 вообще вкурить немогу(
GPIOA->AFR[1] = 0x00000010;//PA1 - AFIO1 (TIM2_CH2)
это получается:
GPIOA->AFR[0](низкие порты до7) = (0x3(AFIO3))<<(5*4)(на порт 6);//PA1 - AFIO1 (TIM2_CH2)
GPIOA->AFR[1] = 0x00000010;//PA1 - AFIO1 (TIM2_CH2)
это получается:
GPIOA->AFR[0](низкие порты до7) = (0x3(AFIO3))<<(5*4)(на порт 6);//PA1 - AFIO1 (TIM2_CH2)
Re: STM32 новичку в ARM что к чему
спящий писал(а):Помогите настроить ногу STM32l на альтернативную функцию TIM3 ШИМ PC6 вообще вкурить немогу(
GPIOA->AFR[0](низкие порты до7) = (0x3(AFIO3))<<(5*4)(на порт 6);//PA1 - AFIO1 (TIM2_CH2)
Не программировал эти контроллеры. Но по дукументу
1. Если нужно настроить PC6 то и использовать нужно GPIOC
2. Нужно настроить порт на альтернатиный выход. Что то типа такого
GPIOC->MODER |= GPIO_MODER_MODER6_1;
3. Нужно настроить нужную альтернативную функцию. Таймеры 3-4 - это альтернативная функция AF2 из рисунка 15 мануала.
К сожалению в плане алтернативных функций ST отошли от ранее принятых макросов. Поэтому можно их дополнить.
#define GPIO_AFRL_AFRL6_1 ((uint32_t)0x02000000)
И написать вот так
GPIOC->AFR[0] |= GPIO_AFRL_AFRL6_1;
0 - это младший регистр, отвечающий за первые 8 пин порта. Согласно секции 5.4.9 мануала выставляются биты альтернативной функции AF2 которые относятся к 6 пину AFRL6.
Если по Вашей логике то
0x2 (AF2) << (6*4) (PC6)
Я это не проверял и работал только с 100 серией. Но по мануалу нужно действовать именно так. Еще в некоторых таймерах был отдельный бит включения выхода. Нужно смотреть есть ли он в 3 таймере и не забыть его выставить, если он есть.
Re: STM32 новичку в ARM что к чему
Galizin писал(а):К сожалению в плане алтернативных функций ST отошли от ранее принятых макросов. Поэтому можно их дополнить.
Да утянуть функцию установки альтернативных настроек из SPL... там строчки три всего... да и не мучаться...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32 новичку в ARM что к чему
Подскажите в какой литературе посмотреть куда подключить кварц. к STM32l152 к каким ножкам
-
Foks
- Поставщик валерьянки для Кота
- Сообщения: 2108
- Зарегистрирован: Пт авг 29, 2008 16:28:19
- Откуда: Киев
Re: STM32 новичку в ARM что к чему
Даташит читать не пробовали? А также референс мануал.
Giggity giggity goo!


