реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> NVIC stm32, TIM2 <-> USART1
PoReX
сообщение Aug 23 2012, 05:44
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Может проще проект выложить, чем гадать на кофейной гуще?


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Aug 24 2012, 07:16
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



main

#include "stm32f10x.h"
#include <misc.h>

//#define

int Delay_ms(unsigned int g)
{
for(volatile int f = g;f>1;f--){};
return 0;
}



void my_timerinit();
void Reinit_system();
void TIM2_IRQHandler();


int main()
{

//RCC_DeInit();
//RCC_HSEConfig(RCC_HSE_ON); //external 8 MHZ

//Reinit_system();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef PORTC_init;
PORTC_init.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
PORTC_init.GPIO_Speed = GPIO_Speed_50MHz;
PORTC_init.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&PORTC_init);



/* Remap GPIO */
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
/* Enable GPIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO, ENABLE);

/* Enable USART clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

/* Configure USART Tx as alternate function push-pull */
GPIO_InitTypeDef U_init;
U_init.GPIO_Mode = GPIO_Mode_AF_OD;//GPIO_Mode_AF_PP;
U_init.GPIO_Pin = GPIO_Pin_9;
U_init.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &U_init);

USART_InitTypeDef MY_USART;
MY_USART.USART_BaudRate = 1200;
MY_USART.USART_WordLength = USART_WordLength_8b;
MY_USART.USART_StopBits = USART_StopBits_1;
MY_USART.USART_Parity = USART_Parity_No;
MY_USART.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
MY_USART.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &MY_USART);
USART_Cmd(USART1, ENABLE);

/* */
//my_timerinit();

RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; //


TIM2->ARR = 60000; //
TIM2->PSC = 300; //
TIM2->CR1 |= TIM_CR1_CEN; //
TIM2->DIER |= TIM_DIER_UIE; //
TIM2->SR = ~TIM_IT_Update;
//TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

//NVIC_Init((NVIC_InitTypeDef*)&nvic);

TIM_Cmd(TIM2, ENABLE);








//NVIC_InitTypeDef NVIC_InitStructure;
//NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
//NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
//NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
//NVIC_Init(&NVIC_InitStructure);
/**/
__enable_irq(); // sei
//NVIC_EnableIRQ(TIM2_IRQn);//); USART1_IRQn //
//NVIC->ISER[0] = 0x110010; //OK return
while(1)
{



for(volatile int r=0;r<6;r++) USART_SendData(USART1,r);
//GPIO_ResetBits(GPIOC,GPIO_Pin_8);
//GPIO_SetBits(GPIOC,GPIO_Pin_9);


// for(volatile int e = 5;e>1;e--){
// Delay_ms(100000);
//}


// GPIO_ResetBits(GPIOC,GPIO_Pin_9);
//GPIO_SetBits(GPIOC,GPIO_Pin_8);
Delay_ms(100000);
}



}


void TIM2_IRQHandler()
{
TIM2->SR &= ~TIM_SR_UIF; // ??????? ???? ??????????
GPIO_Write(GPIOC, GPIO_ReadOutputData(GPIOC) ^ GPIO_Pin_8);

}



void Reinit_system()
{
//#define HSE_VALUE// 8000000
// Enable HSE
RCC->CR |= RCC_CR_HSEON;
//ждать готовности HSE
while((RCC->CR & RCC_CR_HSERDY) == 0){};



//disable PLL
RCC->CR &= 0xfeffffff;

//disable PLL XTPRE
RCC->CFGR &= 0xfffdffff;

// PLLSRC
RCC->CFGR |= 0x00010000;

// PLL*2 = PLL -> 8 MHZ
RCC->CFGR |= RCC_CFGR_SW_PLL ;


//g=356;

RCC->CFGR |= RCC_CFGR_PLLMULL_2;

//PLL ON
RCC->CR |= RCC_CR_PLLON ;
//ждать готовности PLL
while((RCC->CR & RCC_CR_PLLRDY) == 0){};
//return 0;//RCC_CR_HSERDY;
}

//#include "pp.c"


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Aug 24 2012, 08:31
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Может это и паранойа, но напиши-ка

void TIM2_IRQHandler(void)
{
}

вместо нынешнего

void TIM2_IRQHandler()
{
}

Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Aug 24 2012, 08:45
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



пробовал, 0


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 24 2012, 09:00
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Stepan_L @ Aug 24 2012, 10:16) *
//NVIC->ISER[0] = 0x110010; //OK return

Вы разрешаете 3 прерывания, а сколько у вас обработчиков?
Из текста виден только TIM2_IRQHandler.

P.S. Вы бы проект выложили, а не поймёшь из вашего поста где код, где коментарий.
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Aug 24 2012, 09:52
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



Это комментарий.
Прикрепленные файлы
Прикрепленный файл  USART.rar ( 454.36 килобайт ) Кол-во скачиваний: 22
 


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Aug 24 2012, 10:59
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



По stm32f10x_it.c видно что зависает в void HardFault_Handler(void).


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 24 2012, 11:41
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Stepan_L @ Aug 24 2012, 13:59) *
По stm32f10x_it.c видно что зависает в void HardFault_Handler(void).


А stm32f10x_it.c разве подключен к проекту?

P.S. Маловероятно, но мало ли - ваша программа в непривелегированный режим не попадет на момент записи ISER?
Хотя с чего бы?
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Aug 24 2012, 13:41
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



А да, stm32f10x_it.c только что подключил,увидел.
Цитата
ваша программа в непривелегированный режим не попадет на момент записи ISER?


поясните пожалуйста .



--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Aug 25 2012, 18:33
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



Вопрос снят. Все получилось.Я не подключил (не знал,что надо) startup_stm32f10x_md.s, а там почему то "LDR R0, =SystemInit" не хочет работать. Откомментировал и вперед.
Все ОК. С этим завтра разберусь.Всем спасибо.
1111493779.gif


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01434 секунд с 7
ELECTRONIX ©2004-2016