Пт авг 10, 2018 14:42:14
Пт авг 10, 2018 14:44:27
Пт авг 10, 2018 14:45:03
#include "stm32f10x.h"
#define GreenLED_OFF GPIOC->BSRR = GPIO_BSRR_BR9
#define GreenLED_ON GPIOC->BSRR = GPIO_BSRR_BS9
#define BlueLED_OFF GPIOC->BSRR = GPIO_BSRR_BR8
#define BlueLED_ON GPIOC->BSRR = GPIO_BSRR_BS8
static volatile uint32_t TimingDelay;
void SysTick_Handler(void) {
if (TimingDelay) {
TimingDelay--;
}
}
void Delay_mS(uint32_t nTime) {
TimingDelay = nTime;
while (TimingDelay);
}
int main (void)
{
SysTick_Config(SystemCoreClock /1000);
RCC-> APB2ENR |= RCC_APB2ENR_IOPCEN;
GPIOC-> CRH &= ~(GPIO_CRH_CNF9 | GPIO_CRH_CNF8 | GPIO_CRH_MODE9 |
GPIO_CRH_MODE8 );
GPIOC-> CRH |= GPIO_CRH_MODE9_0 | GPIO_CRH_MODE8_0 ;
while (1)
{
GreenLED_OFF;
BlueLED_ON;
Delay_mS(500);
GreenLED_ON;
BlueLED_OFF;
Delay_mS(500);
}
}
Пт авг 10, 2018 15:31:05
2 часа потратили на запись GPIOC->BSRR и при этом допустили ошибку о которой вам писали выше?khch писал(а):Я после 2 часового геммороя осилил мигание на CMSIS!!!
....
HAL_Delay(1000);
GPIOC->BSRR |=1<<29;
HAL_Delay(1000);
GPIOC->BSRR |=1<<13;
Светодиод нужно подключить к PC13 (или запускать код на китайском плате где светодиод по умолчанию на этом выводе).khch писал(а):А как сделать задержку на CMSIS?
#include "stm32f10x.h"
extern uint32_t SystemCoreClock;
static uint32_t Delay_ms;
void DWT_Delay_ms(uint32_t ms) // Функция миллисекундной паузы.
{
uint32_t Count = DWT->CYCCNT;
ms = ms * Delay_ms;
while((DWT->CYCCNT - Count) < ms);
}
int main(void)
{
SystemCoreClockUpdate(); // Текущая тактовая частота.
Delay_ms = SystemCoreClock / 1000;
RCC-> APB2ENR |= RCC_APB2ENR_IOPCEN;
GPIOC->CRH &= ~GPIO_CRH_CNF13;
GPIOC->CRH |= GPIO_CRH_MODE13;
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; // Включение DWT.
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
while(1)
{
GPIOC->ODR ^= GPIO_ODR_ODR13;
DWT_Delay_ms(500);
}
}
Пт авг 10, 2018 15:42:32
Пт авг 10, 2018 15:43:39
Я выше дал ссылку на сообщение досикуса. https://radiokot.ru/forum/viewtopic.php ... 1#p3435201khch писал(а):Почему ошибка!! Где??
Пт авг 10, 2018 16:06:15
Пт авг 10, 2018 20:39:42
Пт авг 10, 2018 20:44:23
Пт авг 10, 2018 20:47:15
Пт авг 10, 2018 20:59:03
Пт авг 10, 2018 21:02:26
Пт авг 10, 2018 21:16:19
Пт авг 10, 2018 21:35:50
Пт авг 10, 2018 21:38:25
Пт авг 10, 2018 21:49:37
Пт авг 10, 2018 21:57:05
Я написал про цифру 3. А не про то, что 33 это цифра.a5021 писал(а):Про цифру 33 спросить невозможно
Сб авг 11, 2018 11:12:06
Сб авг 11, 2018 11:51:43
#define GreenLED_OFF GPIOC->BSRR = GPIO_BSRR_BR9
#define GreenLED_ON GPIOC->BSRR = GPIO_BSRR_BS9
#define BlueLED_OFF GPIOC->BSRR = GPIO_BSRR_BR8
#define BlueLED_ON GPIOC->BSRR = GPIO_BSRR_BS8
GPIOC->BSRR = GPIO_BSRR_Bxy
LED(COLOR, STATE)
#define GREEN 9
#define BLUE 8
#define ON S
#define OFF R
LED(COLOR, STATE) GPIOC->BSRR = GPIO_BSRR_BSTATECOLOR
LED(COLOR, STATE) GPIOC->BSRR = GPIO_BSRR_B##STATE##COLOR
LED(GREEN, ON);
GPIO_BSRR_BONGREEN
#define GLUE2(A, B) A##B
#define GLUE(A, B) GLUE2(A, B)
#define LED(COLOR, STATE) GPIOC->BSRR = GLUE(GPIO_BSRR_B, GLUE(STATE, COLOR))
#include "stm32f1xx.h"
#define GreenLED_OFF GPIOC->BSRR = GPIO_BSRR_BR9
#define GreenLED_ON GPIOC->BSRR = GPIO_BSRR_BS9
#define BlueLED_OFF GPIOC->BSRR = GPIO_BSRR_BR8
#define BlueLED_ON GPIOC->BSRR = GPIO_BSRR_BS8
#define ON S
#define OFF R
#define GREEN 9
#define BLUE 8
#define GLUE2(A, B) A##B
#define GLUE(A, B) GLUE2(A, B)
#define LED(COLOR, STATE) GPIOC->BSRR = GLUE(GPIO_BSRR_B, GLUE(STATE, COLOR))
int main(void) {
while (1) {
GreenLED_ON;
LED(GREEN, ON);
for(int i = 0; i< 0x000FFFFF; i++);
GreenLED_OFF;
LED(GREEN, OFF);
BlueLED_ON;
LED(BLUE, ON);
for(int i = 0; i< 0x000FFFFF; i++);
BlueLED_OFF;
LED(BLUE, OFF);
}
}
int main(void) {
while (1) {
((GPIO_TypeDef *)((0x40000000U + 0x00010000U) + 0x00001000U))->BSRR = (0x1U << (9U));
((GPIO_TypeDef *)((0x40000000U + 0x00010000U) + 0x00001000U))->BSRR = (0x1U << (9U));
for(int i = 0; i< 0x000FFFFF; i++);
((GPIO_TypeDef *)((0x40000000U + 0x00010000U) + 0x00001000U))->BSRR = (0x1U << (25U));
((GPIO_TypeDef *)((0x40000000U + 0x00010000U) + 0x00001000U))->BSRR = (0x1U << (25U));
((GPIO_TypeDef *)((0x40000000U + 0x00010000U) + 0x00001000U))->BSRR = (0x1U << (8U));
((GPIO_TypeDef *)((0x40000000U + 0x00010000U) + 0x00001000U))->BSRR = (0x1U << (8U));
for(int i = 0; i< 0x000FFFFF; i++);
((GPIO_TypeDef *)((0x40000000U + 0x00010000U) + 0x00001000U))->BSRR = (0x1U << (24U));
((GPIO_TypeDef *)((0x40000000U + 0x00010000U) + 0x00001000U))->BSRR = (0x1U << (24U));
}
}
Сб авг 11, 2018 12:15:25