本帖最后由 lovewyufeng 于 2015-1-13 14:15 编辑
中午收到 F334的板子 搞个工程测试一把 顺便贡献了
创建 工程教程 请查看
STM32 如何快速创建 FREERTOS和RTX 工程
F3的 固件库 下载地址
https://www.stmcu.org.cn/document/detail/index/id-215467
废话不多说 下面进入正题
NUCLEOF3 板子看起来和 F072的一样
楼主猜想 LD2 依然连接原来的 PA5
USART2 连接到stlink的串口
由于 F334的板子FLASH 比较小 二HAL库有非常占ROM 所以楼主使用 寄存器配置的GPIO和串口
时钟为内部晶振 倍频到 48M
下面是main.c 添加内容
- /* USART2 init function */
- void MX_USART2_UART_Init(void)
- {
- huart2.Instance = USART2;
- // huart2.Init.BaudRate = 115200;
- // huart2.Init.WordLength = UART_WORDLENGTH_8B;
- // huart2.Init.StopBits = UART_STOPBITS_1;
- // huart2.Init.Parity = UART_PARITY_NONE;
- // huart2.Init.Mode = UART_MODE_TX_RX;
- // huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- // huart2.Init.OverSampling = UART_OVERSAMPLING_16;
- // huart2.Init.OneBitSampling = UART_ONEBIT_SAMPLING_DISABLED ;
- // huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- // HAL_UART_Init(&huart2);
- //先使用库函数 配置后仿真得到寄存器值 手动赋值
- HAL_UART_MspInit(&huart2);
- USART2->BRR=0XD0;
- USART2->CR1=0X0D;
-
- __HAL_UART_ENABLE(&huart2);
- }
- /** Pinout Configuration
- */
- void MX_GPIO_Init(void)
- {
- /* GPIO Ports Clock Enable */
- __GPIOA_CLK_ENABLE();
- }
- #include "stdio.h"
- int fputc(int ch,FILE *f)
- {
- while(!(USART2->ISR&UART_FLAG_TXE));
- USART2->TDR=ch;
- return ch;
- }
- /* USER CODE BEGIN 4 */
- void F334_ledThread(const void *arg)
- {
- __GPIOA_CLK_ENABLE();
- GPIOA->MODER|=GPIO_MODE_OUTPUT_PP<<5*2;//配置 PA5为 OUTPP
- GPIOA->OTYPER|=0<<5;
- for(;;)
- {
- GPIOA->ODR^=GPIO_PIN_5;
- if(GPIOA->ODR&GPIO_PIN_5)//打印 LED状态
- {
- printf("LED2 ON\r\n");
- }
- else
- {
- printf("LED2 OFF\r\n");
- }
- osDelay(2000);//延时2s
- }
- }
- /* USER CODE END 4 */
- static void StartThread(void const * argument)
- {
- /* USER CODE BEGIN 5 */
- osThreadDef(led_Thread, F334_ledThread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE);//定义 led 线程
- osThreadCreate (osThread(led_Thread), NULL);//创建LED线程
- /* Infinite loop */
- for(;;)
- {
- osDelay(1);
- }
- /* USER CODE END 5 */
- }
复制代码
下面是MSP 文件内容
- void HAL_UART_MspInit(UART_HandleTypeDef* huart)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- if(huart->Instance==USART2)
- {
- /* USER CODE BEGIN USART2_MspInit 0 */
- /* USER CODE END USART2_MspInit 0 */
- /* Peripheral clock enable */
- __USART2_CLK_ENABLE();
-
- /**USART2 GPIO Configuration
- PA2 ------> USART2_TX
- PA3 ------> USART2_RX
- */
- // GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
- // GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- // GPIO_InitStruct.Pull = GPIO_PULLUP;
- // GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
- // GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
- // HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- GPIOA->MODER|=((0X2)<<(2*2))|((0X2)<<(2*3));
- GPIOA->OTYPER|=0<<2|0<<3;
- GPIOA->AFR[0]|=GPIO_AF7_USART2<<(2*4);
- GPIOA->AFR[0]|=GPIO_AF7_USART2<<(3*4);
- /* System interrupt init*/
- HAL_NVIC_SetPriority(USART2_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(USART2_IRQn);
- /* USER CODE BEGIN USART2_MspInit 1 */
- /* USER CODE END USART2_MspInit 1 */
- }
- }
复制代码
运行结果为 LD2 2s闪一次 串口输出 状态
|
334 主频 72M
楼主配置为48M而已 因为这个板子没有 外部晶振
过奖
下手快,good!